打字稿异步等待调试

时间:2020-01-31 04:12:04

标签: node.js typescript event-loop

我的代码中有一个奇怪的问题,我无法根本原因。

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秒的延迟。

还有其他调试方法吗?

注意:

  1. 我正在使用节点版本12.11.1
  2. 还使用bluebird来实现承诺
  3. somePromise从一个库中获得,该库已从Typescript转换为Javascript。

1 个答案:

答案 0 :(得分:0)

根本原因是我的代码中有猴子修补的承诺绑定,导致代码在承诺拒绝和事件循环继续之间注入。如果您遇到类似的问题,请检查代码是否修补了Promise.bind