Я борюсь с обещаниямиNodejs Promise() ошибка глотания
, имеющий следующий фрагмент кода:
Promise.resolve()
.then(a("OK1"))
.then(a("OK2"))
.then(a("OK3"))
.then(a("OK4"))
.then(a("OK5"))
.then(function() {
console.log("FINISH");
})
.catch(function(e) {
console.log("ERROR: " + e);
});
function a(i) {
return new Promise(function(resolve, reject) {
if(i == "OK4") {
console.log("THROW");
throw('Error'); //This does not happen
reject();
return;
}
if(i == "OK2") {
reject()
return;
}
console.log(i);
resolve();
});
}
я хочу, чтобы иметь возможность отклонить обещание - то следующий .then
(«OK3») , но я не могу исключить исключения - я хочу запустить .catch на «OK4»
OK4 - отклоняется и не выводится, но OK5 все еще выполняется - есть ли способ, чтобы он был вокруг?
это будет мой ожидаемый результат:
OK1
OK3
ERROR: ....
Вы должны передать функцию 'then', а не обещание. Вы выполняете все свои функции без каких-либо цепочки. – Bergi
ok и как я могу решить проблему с помощью функции async? функция а (х) { SetTimeout (функция() {// КАК РЕШИТЬ ОТ ЗДЕСЬ }, 2000?); –
Вам нужно обернуть его в вызов конструктора 'Promise', как и в вашем вопросе, так что' разрешение' доступно через закрытие. Не уверен, что я понимаю вопрос? – Bergi