美文网首页
关于ES6的异步函数async await

关于ES6的异步函数async await

作者: 泪滴在琴上 | 来源:发表于2022-04-24 10:45 被阅读0次

    异步函数很常见,经常是用 Promise 来实现:

    const fn1 = () =>{
      return new Promise((resolve, reject) => {
        setTimeout(() => {
          resolve(1);
        }, 300);
      });
    }
    const fn2 = () =>{
      return new Promise((resolve, reject) => {
        setTimeout(() => {
          resolve(2);
        }, 600);
      });
    }
    const fn = () =>{
       fn1().then(res1 =>{
          console.log(res1);// 1
          fn2().then(res2 =>{
            console.log(res2)
          })
       })
    }
    

    如果这样调用异步函数,可能会形成地狱回调,可以使用:

    const fn = async () =>{
     const res1 = await fn1();
     const res2 = await fn2();
     console.log(res1);// 1
     console.log(res2);// 2
    }
    

    但是要做并发请求时,还是要用到Promise.all()。

    const fn = () =>{
       Promise.all([fn1(),fn2()]).then(res =>{
           console.log(res);// [1,2]
       }) 
    }
    

    如果并发请求时,只要其中一个异步函数处理完成,就返回结果,要用到Promise.race()。

    相关文章

      网友评论

          本文标题:关于ES6的异步函数async await

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