在学习nodejs的时候了解到最新的ES7语法 async await 可以方便的处理异步执行问题,由于之前都是用的Promise来处理的,大致看了下新语法,感觉非常榜,刚开始了解到的用法大致如下:const a = async function(){
function b(){
setTimeout(()=>{
console.log(11)
},1000)
}
await b()
console.log(22)
}
然后发现还是先打印22
然后再打印11
,很是纳闷,最后深入了解才知道,await
后面需要是一个Promise
对象才可以,由于很多第三方模块都已经封装好了,所以可以直接再await
后面跟第三方模块的方法,如果是我们自己写的异步方法需要按如下方式来写:
(async function(){ |
需要注意的是异步方法执行完后需要执行Promise
的resolve
或reject
回调函数,不然的话awiat
后面的方法执行完就没办法继续向下执行,同时resolve
或reject
里面的参数就是awiat
后面方法执行后的返回值,可以用一个变量来接收,如果下面的逻辑需要用到这个返回值便可以很方便的使用了。