在某个异步函数内 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
场景再完整一点,想象不到外层是怎么用的
|