node.jsに関する記事一覧→ http://morakana.hatenablog.jp/entry/2018/03/09/174557
まずは、前回の基本的なPromise使い方のおさらいです
#!/usr/local/bin/node const puts = console.log; const print = (str)=>{process.stdout.write(str)}; const prms = new Promise((resolve, reject)=>{ resolve('hello world!'); }); prms.then( (val)=>{ print('on_resolve: '); puts(val); } );
これではまだPromise内の処理が成功することしか想定してない状態ですね
では今度は 成功した場合 と 失敗した場合 があるケースについて書いてみます
いろいろと難しい処理を書くと分かりづらくなるので
1/2の確率で成功する場合と失敗する場合で書いてみます
#!/usr/local/bin/node const puts = console.log; const print = (str)=>{process.stdout.write(str)}; // 0 ~ 999 の乱数を発生させる関数を定義 const rnd = ()=>{return Math.floor(Math.random()*1000)}; // rndで乱数を発生させて // 0 ~ 499 なら成功扱い // 500 ~ 999 なら失敗扱いします const prms = new Promise((resolve, reject)=>{ if (rnd() <= 499){ resolve('処理成功'); }else{ reject('処理失敗'); } }); prms.then( (val)=>{ print('on_resolve: '); puts(val); }, (val)=>{ print('on_reject: '); puts(val); } );
前回と比べると本当にちょっと追加しただけですが
thenに対して 成功したと伝えるには resolve を、 失敗したと伝えるには reject を実行し
then側は、第一引数で成功時、 第二引数で失敗時 を受ける
ということを覚えておきましょう