1 parent 8da3b93 commit d40553aCopy full SHA for d40553a
1 file changed
Cute-JavaScript/Cute-ES/3.ES8.md
@@ -48,15 +48,22 @@ const asyncReadFile = async function () {
48
```
49
**对比Genenrator有四个优点:**
50
* (1)内置执行器
51
+
52
Generator函数执行需要有执行器,而`async`函数自带执行器,即`async`函数与普通函数一模一样:
53
```js
54
async f();
55
56
57
* (2)更好的语义
-`async`和`await`,比起`星号`和`yield`,语义更清楚了。`async`表示函数里有异步操作,`await`表示紧跟在后面的表达式需要等待结果。
58
59
+`async`和`await`,比起`星号`和`yield`,语义更清楚了。`async`表示函数里有异步操作,`await`表示紧跟在后面的表达式需要等待结果。
60
61
* (3)更广的适用性
62
63
`yield`命令后面只能是 Thunk 函数或 Promise 对象,而`async`函数的`await`命令后面,可以是 Promise 对象和原始类型的值(数值、字符串和布尔值,但这时等同于同步操作)。
64
65
* (4)返回值是Promise
66
67
`async`函数的返回值是 Promise 对象,这比 Generator 函数的返回值是 Iterator 对象方便多了。你可以用`then`方法指定下一步的操作。
68
69
进一步说,`async`函数完全可以看作多个异步操作,包装成的一个 Promise 对象,而`await`命令就是内部`then`命令的语法糖。
0 commit comments