美文网首页
JS:Promise 的resolve在setTimeout中

JS:Promise 的resolve在setTimeout中

作者: X4tar | 来源:发表于2020-02-08 21:48 被阅读0次
    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。

相关文章

网友评论

      本文标题:JS:Promise 的resolve在setTimeout中

      本文链接:https://www.haomeiwen.com/subject/mzjwxhtx.html