#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内の処理を再開する


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS