aboutsummaryrefslogtreecommitdiff
path: root/files/zh-cn/web/javascript/reference/statements/async_function/index.html
diff options
context:
space:
mode:
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.html17
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>