异步改同步async await用法


例如有下面3个函数

    function a() {
      b();
      c();
    }

    function b() {
      setTimeout(() => {
        console.log('b')
      }, 2*1000);
    }

    function c() {
      setTimeout(() => {
        console.log('c')
      }, 1*1000);
    }

a() //输出结果分布是:c,b

  如果我们相要让他们按顺序输出b,c就不是很容易的了,因为settimeout函数是一个异步执行的事件,所以es6提供了一个async await配合promise方法来解决这个问题,

改写成下面代码

async function a() {
      await b()
      await c()
    }

    function b() {
      return new Promise((resolve, reject) => {
        setTimeout(() => {
          console.log('b')
          resolve(1)
        }, 2 * 1000);
      })
    }

    function c() {
      return new Promise((resolve, reject) => {
          console.log('c')
          resolve(2)
      })
    }

    a()//输出:b,c

  es6提供的async await 方法十分强大,但要配合promise来使用才能展现他的真正功能,具体的async await和promise用法可以百度了解一下

      参考链接:https://www.jianshu.com/p/73b070eebf50

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM