mirror of
https://github.com/ruanyf/es6tutorial.git
synced 2025-05-24 10:22:23 +00:00
docs(async): fixed #1023
This commit is contained in:
parent
584d5d9332
commit
201eebe08f
@ -470,7 +470,7 @@ function dbFuc(db) { //这里不需要 async
|
||||
}
|
||||
```
|
||||
|
||||
上面代码可能不会正常工作,原因是这时三个`db.post`操作将是并发执行,也就是同时执行,而不是继发执行。正确的写法是采用`for`循环。
|
||||
上面代码可能不会正常工作,原因是这时三个`db.post()`操作将是并发执行,也就是同时执行,而不是继发执行。正确的写法是采用`for`循环。
|
||||
|
||||
```javascript
|
||||
async function dbFuc(db) {
|
||||
@ -482,7 +482,7 @@ async function dbFuc(db) {
|
||||
}
|
||||
```
|
||||
|
||||
另一种方法是使用数组的`reduce`方法。
|
||||
另一种方法是使用数组的`reduce()`方法。
|
||||
|
||||
```javascript
|
||||
async function dbFuc(db) {
|
||||
@ -495,7 +495,9 @@ async function dbFuc(db) {
|
||||
}
|
||||
```
|
||||
|
||||
上面例子中,`reduce`方法的第一个参数是`async`函数,导致该函数的第一个参数是前一步操作返回的 Promise 对象,所以必须使用`await`等待它操作结束。另外,`reduce`方法返回的是`docs`数组最后一个成员的`async`函数的执行结果,也是一个 Promise 对象,导致在它前面也必须加上`await`。
|
||||
上面例子中,`reduce()`方法的第一个参数是`async`函数,导致该函数的第一个参数是前一步操作返回的 Promise 对象,所以必须使用`await`等待它操作结束。另外,`reduce()`方法返回的是`docs`数组最后一个成员的`async`函数的执行结果,也是一个 Promise 对象,导致在它前面也必须加上`await`。
|
||||
|
||||
这个例子的`reduce()`的第二个参数是`undefined`,并且第一个参数函数里面没有`return`语句,原因是这个例子没有用到累积变量,而且每一轮`async`函数不管有没有`return`语句,总是返回一个 Promise 对象。换句话说,这里的`reduce()`方法不是为了求值,而是为了遍历操作。
|
||||
|
||||
如果确实希望多个请求并发执行,可以使用`Promise.all`方法。当三个请求都会`resolved`时,下面两种写法效果相同。
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user