Обещания JavaScript и setTimeout
Я играл с Promises, но у меня возникли проблемы с пониманием того, что происходит со следующим кодом:
function a() { return new Promise(function (resolve, reject) { resolve("hi from a!"); }); } function b() { return new Promise(function (resolve, reject) { setTimeout(function () { resolve("hi from b!"); }, 5000); }); } function c() { return new Promise(function (resolve, reject) { setTimeout(function () { resolve("hi from c!"); }, 1000); }); } a().then(function (resultFromA) { console.log("a() responded with: " + resultFromA); b(); }).then(function (resultFromB) { console.log("b() responded with: " + resultFromB); c(); }).then(function (resultFromC) { console.log("c() responded with: " + resultFromC); });
Я ожидаю, что это на выходеa() responded with: hi from a!
немедленно, вместе сb() responded with: hi from b!
а такжеc() responded with: hi from c!
после их соответствующихsetTimeout()
пожары. Тем не менее, что я получаю этот следующий вывод сразу:
a () ответил: привет от!
b () ответил: undefined
c () ответил: undefined
Я думал что.then()
ждет этих обещаний, но это не так. Любая помощь будет оценена.