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

猜你喜欢

转载自www.cnblogs.com/yck123/p/11775826.html