→
プロミス(Promise)を待つために使用します。
通常の JavaScript コードで、async function の内部でのみ使用することができます。よって Promise が返されるのを待機するために使用します。
rv | プロミスの履行された値、または Promise ではない場合はその値自体を返します。 |
---|---|
expression | 待つ Promise もしくは何らかの値。 |
await 式は async 関数の実行を一時停止し、Promise が決定される(すなわち履行または拒否される)まで待ち、履行された後に async 関数の実行を再開します。最下位時に、await 式の値は履行された Promise の値になります。
Promise が拒否された場合、await 式は拒否された値で例外を発生させます。
await 演算子に続く式の値が Promise ではなかった場合、解決された Promise に変換されます。
await は実行フローを分割するため、非同期関数の呼び出し元が実行を再開することができます。await がその非同期関数の継続を延期した後は、後続の文が実行されます。この await がその関数で実行される最後の式である場合、実行は継続され、await の関数の完了を保留していた Promise を呼び出し元に返し、その呼び出し元での実行を再開します。
Promise が await 式に渡された場合、Promise が履行されて履行値を返すのを待ちます。
function resolveAfter2Seconds(x) { return new Promise(resolve => { setTimeout(() => { resolve(x); }, 2000); }); } async function f1() { var x = await resolveAfter2Seconds(10); alert(x); // 10 } D=f1(); //=[object Promise]
は同様に履行されます。
async function f2() { const thenable = { then: function(resolve, _reject) { resolve('resolved!') } }; alert(await thenable); //表示:resolved! } D=f2(); //=[object Promise]
値が Promise でない場合は、値を解決済みの Promise に変換して待ちます。
async function f3() { var y = await 20; alert(y); //表示:20 } D=f3(); //=[object Promise]
Promise が拒否された場合、拒否された値で例外が発生します。
async function f4() { try { var z = await Promise.reject(30); } catch(e) { alert(e); //表示:30 } } D=f4(); //=[object Promise]
拒否された Promise は try ブロックなしで処理することができます。
var response = await promisedFunction().catch((err) => { alert(err); }); // プロミスが拒否された場合、応答は undefined になります
¶省く