ES6的改版,主要是通过引入JAVA等静态语言的优秀思想来解决老版本的一些痼疾,如作用域,回调,继承和封装等问题。这些改革措施是非常成功的,ES6让JS真正变成了一种好用的语言。这里是关于es7的async/await。
ES6
es6
的promise
写法还是不够优雅,因为后面会跟很多then()
。应该说,async/await
是目前解决回调问题最好的方案了。
a:
async
函数是什么?
b:一句话,它就是Generator
函数的语法糖。
a:而Generator
又是神马?
b:是es6
的一个语法。
a:这个语法干嘛的?
b:不用管它,只需要把async搞明白。
要在node7下面才能玩es7,低版本是玩不了的哈。目前官网最新测试版本是10.*
,稳定版出到8.*
,所以安装好就可以使用了。
使用async/await
的目的就是去除掉Promise
后面的then()
,在并行下也没有then()
的,主要是串行,就是互相依靠的请求方式。
- 假设有三个请求:
请求1:拿到userid,传递给请求2。
请求2:根据userid,查询ssoid,传递给请求3。
请求3:根据ssoid,查到最终结果。
那么,如果可以这么写就好了:
1 | var userid = getRequest1(); |
把之前es6的写法改一下:
1 | var request = require('request'); |
注意:
1
2
3
4
5
6 1.async需要放在函数声明前,表示这个函数返回的一定是promise对象。
2.await后面也必须是promise对象,表示这个任务是需要等待的。
3.最后用then()获取所有接口的信息,catch()捕获所有异常。
4.这种写法虽然类似同步,但实际是promise的简化写法,不可混为一谈!
这样,简单整洁,只留一个then和catch。