Promise / async・await
#Javascript
Promise
Promiseについて詳しく書いてあるところ:https://azu.github.io/promises-book/
1.3. Promiseの書き方
https://scrapbox.io/files/630ac8e6d059d9004d4598c5.png
2.3. コラム: Promiseは常に非同期?
2.9. Promise.all 、<--並列の非同期処理
async・await
code:js
function sampleResolve(value) {
return new Promise(resolve => {
setTimeout(() => {
resolve(value * 2);
}, 2000);
})
}
/** sampleResolve()をawaitしているため、Promiseの結果が返されるまで処理が一時停止される。今回の場合、2秒後にresolve(10)が返ってきてその後の処理(return result + 5;)が再開されるresultにはresolveされた10が格納されているため、result + 5 = 15がreturnされる */
async function sample() {
const result = await sampleResolve(5);
return result + 5;
}
sample().then(result => {
console.log(result); // => 15
});
asyncとは
/icons/hr.icon
非同期関数を定義する関数宣言のこと。
関数の前にasyncを宣言することにより、非同期関数(async function)を定義できる。
async function(asyncで宣言した関数)は何をするのか
async functionは呼び出されるとPromiseを返す。
async functionが値をreturnした場合、Promiseは戻り値をresolveする。
async functionが例外や何らかの値をthrowした場合はその値をrejectする。
awaitとは
/icons/hr.icon
async function内でPromiseの結果(resolve、reject)が返されるまで待機する(処理を一時停止する)演算子のこと。
awaitは何をするのか
awaitを指定した関数のPromiseの結果が返されるまで、async function内の処理を一時停止する。
結果が返されたらasync function内の処理を再開する。
引用:https://qiita.com/soarflat/items/1a9613e023200bbebcb3
参考:https://ja.javascript.info/async-await