【js(非同期処理)】書き方②

同期処理:ある関数の処理が完了すると、次の関数が実行される
非同期処理:ある関数の処理の完了を待つことなく、次の関数の処理を実行する

非同期処理を同期処理のようにするひと手間

javascriptの一連の処理があるとする。
途中で、DBでデータを取得したり、phpで計算処理したり、
その結果もらったうえで、続きのjavascriptの処理に使いたい時。

考え方はシンプルで非同期処理の完了を待つようにして、
同期処理のように順番を守って実行してもらうようにすればOK

「return new Promise(function(resolve,reject){ });」で囲う

①非同期処理をreturn new Promise(function(resolve,reject){ });の{}の中に記述
②非同期処理の記述の後ろに、改行してresolve()を記述(「成功したから実行してね」という意味)
③呼び出すときは「非同期処理だったけど、もう同期処理だよ~」ってアピール
変数(関数名)().then()で実行し、()内には次に行ってほしい記述や変数を記述

//1番目の処理
const a = function(){console.log('a');}

//2番目の処理
const b = function(){
  return new Promise(function(resolve,reject){
              setTimeout(function(){
                console.log('b')
                resolve(); //成功時、resolveメソッドを実行
                },2000);
            });
          }


//3番目の処理
const c = function(){console.log('c');}

a()
b().then(c)

【補足】
Promiseメソッドのコールバック関数の第一引数のresolve,rejectはなんでもOK
意味は
resolve:成功したとき
reject :失敗したとき

https://qiita.com/watatakahashi/items/11b529d299c2bc47b032
https://www.sejuku.net/blog/52314
https://www.sejuku.net/blog/69618