Обещания 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() ждет этих обещаний, но это не так. Любая помощь будет оценена.

Ответы на вопрос(3)

Ваш ответ на вопрос