Машинопись asyn c жду отладки - PullRequest
0 голосов
/ 31 января 2020

У меня странная проблема в моем коде, и я не могу root вызвать ее.

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
}

Мой вопрос: почему между обещанием отклонить обещание и его фактическим существованием существует огромная задержка? поймали во внешнем блоке catch?

Я нахожусь в моей среде разработчиков, которая довольно простаивает. Кроме того, он постоянно имеет задержку около 15 секунд.

Существуют ли другие способы отладки?

Примечания:

  1. Я использую версию узла 12.11.1
  2. Также использование bluebird для обещаний
  3. somePromise получено из библиотеки, которая была перенесена в Javascript из Typescript.

1 Ответ

0 голосов
/ 01 февраля 2020

Причина root состояла в том, что в моем коде была привязка обещания, пропатченная обезьяной, что привело к вводу кода между отклонением обещания и продолжением события l oop. Если у вас есть похожая проблема, проверьте, исправлен ли ваш код Promise.bind.

...