Код:Promise, не дожидаясь, чтобы решить, прежде чем следующий затем
var x = new Promise((resolve, reject) => {
setTimeout(function() {
console.log('x done');
resolve()
}, 1000);
});
Promise.resolve().then(x).then((resolve, reject) => {
console.log('all done');
});
Выход:
all done
x done
Ожидаемый результат:
x done
all done
Почему обещание x
не дожидаясь разрешения перед вызовом следующего then
callback?
JSFiddle: https://jsfiddle.net/puhbqtu0/1/
'then' ожидает функцию как своего аргумента, а не обещание. – Bergi
, потому что 'then()' нуждается в функции в качестве аргумента, а не в обещании. Итак, следующий 'then' выполняется после того, как x запущен, а не разрешен. –
Вы должны вернуть 'x' в' then': 'then (() => x)'. – alexmac