美文网首页
ES6中async函数(一) 关于await

ES6中async函数(一) 关于await

作者: XJBT | 来源:发表于2018-10-16 10:13 被阅读150次

后端框架koa2中采用了async函数取代了前一代中的Generator函数,所以有必要对async函数进行进一步的理解。


首先应该明白async函数其实只是Generator函数的一个语法糖而已,对于Generator函数而言,他无法自执行,而需要自己来书写或导入执行器来帮助执行,而对于async函数来说,只需要想普通的同步函数一样调用即可,只是在书写函数时需要在开头加入async,而在内部需要进行异步操作的地方加上await。


注意:await后面要等待的是什么?
答:一个Promise对象
我们来看下面这个例子:

await后面不是Promise对象时 执行结果如下所示:
我们可以很清楚的发现,当await后面不是一个Promise对象时,那么他将不被await等待,若是一个异步操作,就会被加入异步队列。 执行结果 现在对代码稍作修改,将await后面的代码改成Promise对象的形式: await后面是Promise对象时 执行结果如下所示: 执行结果 我们可以发现改成Promise对象后await就发挥作用了,这时async函数内部会等到await后面的Promise对象的状态变成resolved或是rejected时再进行下一步的操作。注意:若Promise对象内部操作结束后既没有调用resolve也没有调用reject函数,那么将一直处于pending状态,那么async函数也就一直停滞在await处不再向下执行,执行结果也就如下图所示了 Promise对象内部状态不发生改变时

相关文章

网友评论

      本文标题:ES6中async函数(一) 关于await

      本文链接:https://www.haomeiwen.com/subject/iapczftx.html