我的代码中有一个奇怪的问题,我无法根本原因。
try {
const result = await somePromise.catch((err) => {
console.log(new Date()); // this prints time, t0
console.log('Stats', eventLoopStats.sense());
throw err;
});
} catch (e) {
console.log(new Date()); // this prints time, t0 + 15 seconds
console.log('Stats', eventLoopStats.sense()); // this prints {0, 0, 0, 0}, meaning, event loop hasn't been involved since last call to sense
}
我的问题是,为什么拒绝承诺与实际被捕获在外部捕获块之间会有很大的滞后时间?
我在我的开发环境中,这是相当闲置的。而且,它始终具有约15秒的延迟。
还有其他调试方法吗?
注意:
bluebird
来实现承诺somePromise
从一个库中获得,该库已从Typescript转换为Javascript。答案 0 :(得分:0)
根本原因是我的代码中有猴子修补的承诺绑定,导致代码在承诺拒绝和事件循环继续之间注入。如果您遇到类似的问题,请检查代码是否修补了Promise.bind
。