await
操作符用于等待一个async function
中使用。
语法
[return_value] = await expression;
- 表达式
-
一个
Promise
对象或者任何要等待的值。 - 返回值
-
返回 Promise 对象的处理结果。如果等待的不是 Promise 对象,则返回该值本身。
描述
await 表达式会暂停当前 async function
。
若 Promise 处理异常(rejected),await 表达式会把 Promise 的异常原因抛出。
另外,如果 await 操作符后的表达式的值不是一个 Promise,则返回该值本身。
例子
如果一个 Promise 被传递给一个 await 操作符,await 将等待 Promise 正常处理完成并返回其处理结果。
function resolveAfter2Seconds(x) { return new Promise(resolve => { setTimeout(() => { resolve(x); }, 2000); }); } async function f1() { var x = await resolveAfter2Seconds(10); console.log(x); // 10 } f1();
如果该值不是一个 Promise,await 会把该值转换为已正常处理的Promise,然后等待其处理结果。
async function f2() { var y = await 20; console.log(y); // 20 } f2();
如果 Promise 处理异常,则异常值被抛出。
async function f3() { try { var z = await Promise.reject(30); } catch (e) { console.log(e); // 30 } } f3();
规范
Specification | Status | Comment |
---|---|---|
ECMAScript Async Functions async function |
Draft | 提案 |
浏览器兼容性
We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains.
Find out how you can help!
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Edge | Opera | Safari (WebKit) |
---|---|---|---|---|---|---|
基本支持 | 55 | 52.0 (52.0) | ? | ? | 42 | ? |
Feature | Android | Android Webview | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile | Chrome for Android |
---|---|---|---|---|---|---|---|
基本支持 | 未实现 | 未实现 | 52.0 (52.0) | ? | 42 | ? | 55 |
查看更多
async 函数
async 函数表达式
AsyncFunction
object