在某个异步函数内 function f(){ return new Promise(async (resolve, reject) => { event.on('timeout',()=>{ resoleve() }) //do something })) }
这个异步函数内,如果触发 event 的 emit ,即使这个 promise 是 resolved ,但是后面的代码仍然在继续运行,我想要做到,如果达到超时时间,就结束这个函数中所有的代码,并且返回 可以做到吗
![]() | 1 Trim21 2023-08-07 20:58:58 +08:00 via Android js 的话感觉只能传个 AbortSignal 进去,然后修改后续代码检查是否已经超时? |
![]() | 2 ysc3839 2023-08-07 22:23:50 +08:00 via Android 不能中途中断,得在后面的代码中隔一段就检查一下是否已取消,然后返回。 |
4 zbinlin 2023-08-07 23:18:50 +08:00 后面的代码是一个 loop 循环吗?如果不是一般就是执行完的。 |
5 Rache1 2023-08-07 23:28:16 +08:00 用这个 Promise.race() - Javascript | MDN https://developer.mozilla.org/zh-CN/docs/Web/Javascript/Reference/Global_Objects/Promise/race |
7 DingJZ 2023-08-08 11:17:05 +08:00 场景再完整一点,想象不到外层是怎么用的 |