JS:Promise 的resolve在setTimeout中
2020-02-08 本文已影响0人
X4tar
function cal(){
return new Promise((resolve,reject)=>{
setTimeout(res=>{
console.log(1);
resolve(2);
},2000);
console.log(3)
});
}
async function a(){
let r = await cal();
console.log(r);
console.log(4);
}
a();
,
输出:3 1 2 4
原因:cal() 返回 Promise , await 会等待 Promise 结束(可能是 rejected 或者
resolved ),并取到 reject 或 resolve 的传参,返回给 r 。 resolve() 则会将 Promise 由 pending (进行中)标记为 resolved ,所以 await 会等待 setTimeout。但是如果返回的不是 Promise , await 就会等待了,即使 cal() 里有定义了一个 Promise。