我的代码中有一个奇怪的问题,我无法根本原因。
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的库中获得的。根本原因是我的代码具有猴子补丁的承诺绑定,这导致代码在承诺拒绝和事件循环继续之间注入。如果您有类似的问题,请检查您的代码是否已修补Promise.bind
。