From 201eebe08fa11f992196a9a40a98ba3be2a48d8d Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sun, 29 Nov 2020 12:23:59 +0800 Subject: [PATCH] docs(async): fixed #1023 --- docs/async.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/async.md b/docs/async.md index b305d37..c28439d 100644 --- a/docs/async.md +++ b/docs/async.md @@ -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`时,下面两种写法效果相同。