await

这篇翻译不完整。请帮忙从英语翻译这篇文章

await 操作符被用来等待 async function 返回的 promise。

语法

[rv] = await expression;
表达式
一个 promise 或者 任何值来等待解决方案
返回值

返回 promise resolved 后的值,如果不是 promise,则返回其自身。

描述

await 表达式会造成异步函数停止执行并且等待 promise 的解决,当值被 resolved,异步函数会恢复执行以及返回 resolved 值。如果该值不是一个 promise,它将会被转换成一个 resolved 后的 promise。

如果 promise 被 rejected,await 表达式会抛出异常值。

例子

如果一个 promise 传给 await 表达式,它将会等待 promise 的解决和返回的 resolved 值。

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,那么会把它转换成一个已经 resolved 的 promise,并且等待它。

async function f2() {
  var y = await 20;
  console.log(y); // 20
}
f2();

如果 promise 被 rejected,异常值会被抛出。

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 提案

浏览器兼容性

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

See also

文档标签和贡献者

 此页面的贡献者: chenlexing, x-cold, liuqipeng417
 最后编辑者: chenlexing,