美文网首页
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