异步改同步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

 

posted @ 2019-11-01 11:04  时光如瑾季微凉  阅读(4391)  评论(0编辑  收藏  举报