【ES6】async/await

来源:互联网 发布:app运营数据报告模板 编辑:程序博客网 时间:2024/06/07 05:35

前言:

前段时间在整理有关于ES6的文档,一边学习,一边总结。大致列出的一个提纲,自己对ES6的理解,仅供大家参考学习。


同步的实现,从回调到Generator,再到Promise,再到async/await。

Node 7.6版本支持async/await的写法。


let timeout = (t)=>{    return new Promise(resolve=>{           setTimeout(resolve,t)       })}(async ()=>{    console.log(`两秒之后打印:`)    await timeout(2000)    console.log(`hello world`)})();

async

通过关键字对function进行标识,指明这是一个异步方法。
需要注意的是:

通过async标识的function,其返回值是个Promise。比如,在函数内部返回的是个一个字符串,async自动将它封装成一个Promise。


await

await愿意是等待,它会等待它后面紧跟着的表达式的执行完成。分两种情况:

  1. 若await后面是个Promise对象,它会一直等到resolve或者reject的完成,返回最终的处理结果。
  2. 若await后面是个非Promise对象,则直接返回表达式的返回值

参考url:http://cnodejs.org/topic/5640b80d3a6aa72c5e0030b6