深入理解ES7的async/await

参考原文:

https://blog.csdn.net/sinat_17775997/article/details/60609498

在js中我们可以使用Promise方便地进行异步操作,但是有时候会有两个异步操作之间需要保证先后关系,比如请求一次数据A,A数据得到后然后再请求数据B。

要解决上述问题,以往情况下我们可以在请求A数据的Promise的then中再new 一个Promise来请求B。这样是完全没有问题的,但是代码看起来似乎不太优雅,仿佛又回到原来的回调地狱里。es7给我们提供了async await来更加简单地解决上述问题。先看代码


 var test=async function () {
    await new Promise(function(resolve,reject){
        setTimeout(function(){
            console.log('111')
            resolve('111')
        },5000)
    }).then((data)=>console.log('task1 end'))
    await new Promise(function(resolve,reject){
       setTimeout(function(){
           console.log('222')
           resolve('222')
       },5000)
   }).then((data)=>console.log('task2 end'))


}
test()



代码中的test函数用了async修饰,表明这是一个异步方法。在一个同步方法中才可以使用await关键字。

await关键字可以用来等待一段异步代码的运行,实际上是等待一个promise resolve,返回值就是这个promise resolve后经过then处理后最后的返回值。函数执行到await后此函数就会等待await的函数执行完毕才会继续向下执行,等待期间不会阻塞,其他函数可以正常执行。

发布了21 篇原创文章 · 获赞 2 · 访问量 7283

猜你喜欢

转载自blog.csdn.net/qq_31261131/article/details/81170596
今日推荐