Promesas JavaScript y setTimeout
He estado jugando con Promises, pero tengo problemas para entender lo que está sucediendo con el siguiente código:
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); });
Estoy esperando que esto salgaa() responded with: hi from a!
inmediatamente, junto conb() responded with: hi from b!
yc() responded with: hi from c!
después de sus respectivossetTimeout()
incendios Sin embargo, lo que obtengo es el siguiente resultado de inmediato:
a () respondió con: hola desde a!
b () respondió con: indefinido
c () respondió con: indefinido
Estaba pensando eso.then()
espera estas promesas, pero no lo es. Cualquier ayuda sería apreciada.