#author("2019-11-04T03:41:39+09:00","default:ryuichi","ryuichi")
#author("2019-11-04T03:48:56+09:00","default:ryuichi","ryuichi")
* Promiseの実行 [#m1a1b5e7]
** 呼び出される非同期関数 - Promiseを返す関数 [#f273c339]
function resolveAfter3Seconds() {
return new Promise(resolve => {
setTimeout(() => {
resolve('resolved');
}, 3000);
});
}
** 非同期関数の呼び出し 1 - Promise.then()でresolveする [#wf9516e4]
console.log("1");
resolveAfter3Seconds().then((data) =>{
console.log(data);
});
console.log("2");
=> "1"
"2"
"resolved"
** 非同期関数の呼び出し 2 - async/awaitでresolveする [#xe4d9364]
console.log("1");
async function getAsyncData() {
async function getAsyncData() { // (0)
console.log("A");
const result = await resolveAfter3Seconds();
console.log(result);
const result = await resolveAfter3Seconds(); // (1)
console.log(result); // (2)
console.log("B");
}
getAsyncData();
console.log("2");
=> "1"
"A"
"2"
"resolved"
"B"
- (0) awaitはasync function内でないと利用できない
- (1) async function内でPromiseの結果が返される(=resolve('resolved')が実行される)まで待機する
- (2) 結果が返されたらasync function内の処理を再開する