Я использую машинописный текст для написания обещаний JS. У меня есть соединение обещание, то есть обещание, которое возвращает обещание у меня есть:Обеспечение выполнения asyncronous '.then() в сложных обещаниях
test() {
addElement("first")
.then(
function (val){
addElement("second");
console.log("second*);
})
.then(
function (val){
addElement("third");
console.log("third*");
});
}
export function addElement(elementText){
return new Promise(function(resolve,reject){
setTimeout(function(){
resolve();
}, Math.random() * 2000);
})
.then(console.log(elementText));
}
Я хотел бы эти функции, чтобы распечатать, first, second*, second, third*, third
. Тем не менее, я получаю:
JS: первая JS: второй * JS: третий * JS: третий JS: второй
Как я могу получить then
выполнить после названных обещаний 'then
завершено?
Пообещания разрешаются на следующей итерации цикла событий, по дизайну. – zerkms
@zerkms Есть ли способ выполнить некоторый код только после выполнения всей логики addElement? Как событие onCompletion? –
Вы можете использовать Promise.all(), который также учитывал бы порядок выполнения. –