Единственное допустимое решение, с которым я столкнулся до сих пор, — это просто постоянно проверять, является ли сигнал, который я слушаю, ложным — это можно замаскировать, обернув проверку в вызов функции. В противном случае создается впечатление, что NodeJS не может завершить функцию.
Я надеялся использовать решение, синтаксически похожее на следующее:
Код: Выделить всё
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
new Promise(async (resolve, reject) => {
try {
console.log(1);
sleep(1000).then(() => {throw new Error("hi")}); // some arbitrary time until the signal is activated
await sleep(2000); // some long running task(s)
console.log(2);
} catch(e) {reject(e)};
}).catch(() => console.log("caught"));
Существует ли элегантный метод отмены/завершения/прерывания обещания в середине его выполнения?>
Подробнее здесь: https://stackoverflow.com/questions/798 ... m-anywhere
Мобильная версия