(node.js)(javascript)(promise) Promiseのインスタンスはチェイン出来る

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の内容は 実行されない

ということなのです
これをうまく利用すれば 非同期処理を同期させて実行することも可能になるわけです