await
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since 2017å¹´3æ.
* Some parts of this feature may have varying levels of support.
await éç®åå¯è¢«ç¨ä¾çå¾
Promiseï¼åªè½å¨ async functionå
§ä½¿ç¨ã
èªæ³
[rv] = await expression;
expression-
çå¾ è§£æç
Promiseç©ä»¶æä»»ä½å¼ã rv = åå³å¼-
åå³ Promise ç©ä»¶ç resolved å¼ï¼æç¶è©²å¼ä¸æ¯ Promise ç©ä»¶æï¼åå³è©²å¼æ¬èº«ã
æè¿°
æ¤ await è¡¨ç¤ºæ³ææ«å async å½å¼å·è¡ï¼çå¾ Promise ç©ä»¶çè§£æï¼ä¸¦å¨ promise ç©ä»¶çå¼è¢« resolve æå復 async å½å¼çå·è¡ãawait æ¥èåå³éå被 resolve çå¼ã妿åå³å¼ä¸æ¯ä¸å Promise ç©ä»¶ï¼åæè¢«è½æçº resolved çæ ç Promise ç©ä»¶ã
妿 Promise ç©ä»¶è¢« rejectedï¼å await æä¸åº rejected çå¼ã
ç¯ä¾
è¥å° Promise ç©ä»¶å³çµ¦ await éç®å¼ï¼å®æçå¾ Promise è§£æä¸¦åå³ resolve å¾çå¼ã
function resolveAfter2Seconds(x) {
return new Promise((resolve) => {
setTimeout(() => {
resolve(x);
}, 2000);
});
}
async function f1() {
var x = await resolveAfter2Seconds(10);
console.log(x); // 10
}
f1();
è¥å³çµ¦ await çå¼ä¸¦éä¸å Promise ç©ä»¶ï¼å®æå°è©²å¼è½æçº resolved Promiseï¼ä¸¦çå¾ ä¹ã
async function f2() {
var y = await 20;
console.log(y); // 20
}
f2();
è¥ Promise 被 rejectï¼åä¸åº reject å¾çç°å¸¸å¼ã
async function f3() {
try {
var z = await Promise.reject(30);
} catch (e) {
console.log(e); // 30
}
}
f3();
è¦ç¯
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-async-function-definitions> |