node.jsに関する記事一覧→ http://morakana.hatenablog.jp/entry/2018/03/09/174557
前回までは new Promise したものを 変数に代入して
その変数に .then と続けることで
Promise内の処理が 成功 又は 失敗 した時のデータを受けていました
prms = new Promise(()=>{}); prms.then();
ただこれは、変数に代入せずに、直接 .thenと続けても機能します
new Promise(()=>{}).then();
まぁ、ここまでは、単に式の書き方の違いなので分かると思います
では、thenの戻り値はというと・・・ なんと Promiseなのです
実際に
const puts = console.log; puts( new Promise(()=>{}).then() );
みたいにして確認してみると
Promise { <pending> }
との結果が得られます、つまりPromiseが返ってきているのです
という事は then に .then と続けてもPromiseが返り続けるということになるのです
実際に
const puts = console.log; puts( new Promise(()=>{}) .then().then().then().then() );
こんな感じにしても得られる結果はさっきと同じ
Promise { <pending> }
となります
じゃあこの事に何のメリットがあるのか?というと
thenの内容 は Promiseの成功か失敗かが確定しないと実行されません
つまり
前のthenが返した Promiseの中身の処理が 成功したか失敗したかが確定するまでは
次のthenの内容は 実行されない
ということなのです
これをうまく利用すれば 非同期処理を同期させて実行することも可能になるわけです