Recibo productos de diferentes servidores, quiero una excepción de devolución, cuando espero mucho tiempo. Creé setTimeout para esto, pero detuvo el servidor y no devolvió el error.
¿Como arreglarlo?
const server = 23; const productsTimeout = setTimeout(() => { throw new HttpException('Problem', HttpStatus.INTERNAL_SERVER_ERROR) }, 3000); products = await new Promise((resolve, reject) => { this.socketClientCabinet.on('products_get', async ({ server, products }) => { if (server === serverID) { const { productsSymbols, } = this.productsTransform(products); clearTimeout(productsTimeout); resolve(productsSymbols); } }); });El usuario eliminó su respuesta, lo arreglé.
let productsTimeout; const timeoutPromise = new Promise((res, rej) => { instrumentsTimeout = setTimeout(() => rej(new HttpException('problem', 500)), 1000, ) }) const productsPromise = new Promise((resolve, reject) => { this.socketClientCabinet.on('products_get', async ({ server, products }) => { if (server === serverID) { const { productsSymbols, } = this.productsTransform(products); clearTimeout(productsTimeout); resolve(productsSymbols); } }); }); const products = await Promise.race([ timeoutPromise, productsPromise ])Eso es trabajo.