async/awaitとは?
-
Promise
による非同期処理を簡潔に記述するための記法。 - 非同期処理は
then
を繋げる形で記載もできるが、async/await
は可読性を向上させる。
使い方
-
async
を付与したfunctionを用意
→async
を付与するとPromise
を返却し、return後にPromise
がresolveされる。 - 上記関数内の
Promise
処理部分の前にawait
を付与する。
→await
はPromise
が確定するのを待つ役割を持つ。
function sugarPromise(){
return new Promise(function(resolve) => {
setTimeout(() => {resolve('hogehoge2')}, 10000)
});
}
async function sugarSync(){
const result = await sugarPromise();
// sugarPromise()内でPromiseが解決するまで次の処理を行わない
console.log(result);
}
sugarSync();
console.log('hogehoge1');
実行すると
hogehoge1
hogehoge2
となるはず。(1と2は10秒の間隔)
注意点
- 複数のawaitを記述するとそれぞれ待たないといけない。上記の例を以下の通り書き直すと10秒×3=30秒待たないといけない。
const result1 = await sugarPromise();
const result2 = await sugarPromise();
const result3 = await sugarPromise();
次の通り記載すると並列で処理が可能。
const result1 = sugarPromise();
const result2 = sugarPromise();
const result3 = sugarPromise();
const x1 = await result1;
const x2 = await result2;
const x3 = await result3;
console.log(x1);