Этот код работает правильно:
let promise;
try {
promise = parent();
//but I want: await parent();
await continueStack();
} catch (e) {
console.log('Caught error in endpoint');
}
eventBus.on('stop::all', () => {
console.warn('Caught stop::all event');
promise.cancel();
});
Это отменяет обещание на событие, отправленное из другой части программы.Моя проблема в том, что у меня не может быть await parent()
, потому что тогда прослушивание события еще не выполнено.Если я изменяю на это:
let promise;
eventBus.on('stop::all', () => {
console.warn('Caught stop::all event');
promise.cancel();
});
try {
promise = await parent();
await continueStack();
} catch (e) {
console.log('Caught error in endpoint');
}
, тогда у меня появляется ошибка
TypeError: Невозможно прочитать свойство 'cancel' из неопределенного
, и происходит сбойи continueStack()
никогда не выполняется.Как мне примирить их?
Я создал целый пример с приведенным выше сценарием:
https://gist.github.com/BorysTyminski/147dc2e0c44c8d64386253d563ff6db4
Чтобы запустить его, вам нужнополучите оба файла, установите package.json зависимости и запустите запрос cURL / Postman GET для localhost: 5000 / test