diff options
Diffstat (limited to 'files/zh-cn/web/javascript/reference/statements/async_function/index.html')
-rw-r--r-- | files/zh-cn/web/javascript/reference/statements/async_function/index.html | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/files/zh-cn/web/javascript/reference/statements/async_function/index.html b/files/zh-cn/web/javascript/reference/statements/async_function/index.html index ba79f6a5d2..5088f77130 100644 --- a/files/zh-cn/web/javascript/reference/statements/async_function/index.html +++ b/files/zh-cn/web/javascript/reference/statements/async_function/index.html @@ -35,22 +35,21 @@ translation_of: Web/JavaScript/Reference/Statements/async_function <dd>要传递给函数的参数的名称。</dd> <dt><code>statements</code></dt> <dd>包含函数主体的表达式。可以使用<code>await</code>机制。</dd> - <dt> - <h3 id="返回值">返回值</h3> - </dt> - <dd>一个{{jsxref("Promise")}},这个promise要么会通过一个由async函数返回的值被解决,要么会通过一个从async函数中抛出的(或其中没有被捕获到的)异常被拒绝。</dd> </dl> +<h3 id="返回值">返回值</h3> +<p>一个{{jsxref("Promise")}},这个promise要么会通过一个由async函数返回的值被解决,要么会通过一个从async函数中抛出的(或其中没有被捕获到的)异常被拒绝。</p> + <h2 id="描述">描述</h2> <p>async函数可能包含0个或者多个{{jsxref("Operators/await", "await")}}表达式。await表达式会暂停整个async函数的执行进程并出让其控制权,只有当其等待的基于promise的异步操作被兑现或被拒绝之后才会恢复进程。promise的解决值会被当作该await表达式的返回值。使用<code>async</code> / <code>await</code>关键字就可以在异步代码中使用普通的<code>try</code> / <code>catch</code>代码块。</p> <div class="note"> -<p><code>await</code>关键字只在async函数内有效。如果你在async函数体之外使用它,就会抛出语法错误 {{jsxref("SyntaxError")}} 。</p> +<p><strong>备注:</strong><code>await</code>关键字只在async函数内有效。如果你在async函数体之外使用它,就会抛出语法错误 {{jsxref("SyntaxError")}} 。</p> </div> <div class="note"> -<p><code>async</code>/<code>await</code>的目的为了简化使用基于promise的API时所需的语法。<code>async</code>/<code>await</code>的行为就好像搭配使用了生成器和promise。</p> +<p><strong>备注:</strong><code>async</code>/<code>await</code>的目的为了简化使用基于promise的API时所需的语法。<code>async</code>/<code>await</code>的行为就好像搭配使用了生成器和promise。</p> </div> <p>async函数一定会返回一个promise对象。如果一个async函数的返回值看起来不是promise,那么它将会被隐式地包装在一个promise中。</p> @@ -200,6 +199,7 @@ setTimeout(parallelPromise, 13000); // same as parallel </pre> <div class="note"> +<p><strong>备注:</strong></p> <h4 id="await_and_parallelism并行"><code>await</code> and parallelism(并行)</h4> <p>在<code>sequentialStart</code>中,程序在第一个<code>await</code>停留了2秒,然后又在第二个<code>await</code>停留了1秒。直到第一个计时器结束后,第二个计时器才被创建。程序需要3秒执行完毕。</p> @@ -213,6 +213,7 @@ setTimeout(parallelPromise, 13000); // same as parallel </div> <div class="warning"> +<p><strong>警告:</strong></p> <h4 id="asyncawait和Promisethen对比以及错误处理"><code>async</code>/<code>await和</code>Promise#then对比以及错误处理</h4> <p>大多数async函数也可以使用Promises编写。但是,在错误处理方面,async函数更容易捕获异常错误</p> @@ -255,8 +256,8 @@ setTimeout(parallelPromise, 13000); // same as parallel <p>注意,在上述示例中,<code>return</code> 语句中没有 <code>await</code> 操作符,因为 <code>async function</code> 的返回值将被隐式地传递给 <code>{{jsxref("Promise.resolve")}}</code>。</p> -<div class="blockIndicator note"> -<p><strong><code>return await promiseValue;</code> 与 <code>return promiseValue;的比较</code></strong></p> +<div class="note"> +<p><strong>备注:</strong></p> <p>返回值<code>隐式的传递给</code>{{jsxref("Promise.resolve")}},并不意味着<code>return await promiseValue;和return promiseValue;</code>在功能上相同。</p> |