async
非同期処理を定義する関数宣言
async function sample() {}
async functionとは
- 呼び出されるとPromiseを返す
- 値をreturnした場合、Promiseは戻り値をresolveする
- 例外や何らかの値をthrowした場合はその値をrejectする
async function promise(){
let err = something();
if (err) {
throw new Error(err);
}
return data;
});
// thenに正常なときの動作を書く
// catchにエラーのときの動作を書く
promise()
.then(data => {
console.log('success');
}
.catch(err => {
console.log('error');
});
await
awaitを指定した関数のPromiseの結果が返されるまで、async function内の処理を一時停止する
awaitはasync function内でないと利用できない
reference
example on the above mdn page
// 普通のpromise
function resolveAfter2Seconds(x) {
return new Promise(resolve => {
setTimeout(() => {
resolve(x);
}, 2000);
});
}
// 同期で動く
async function add1(x) {
const a = await resolveAfter2Seconds(20);
const b = await resolveAfter2Seconds(30); // a が返ってくるまで動作しない
return x + a + b;
}
add1(10).then(v => {
console.log(v); // 4秒後に60を表示します。
});
async function add2(x) {
const p_a = resolveAfter2Seconds(20); // 非同期で動く
const p_b = resolveAfter2Seconds(30); // 非同期で動く
return x + await p_a + await p_b; // 値が返ってくるのは待つ
}
add2(10).then(v => {
console.log(v); // 2秒後に60を表示します。
});[