(node.js)(javascript)(promise) 成功時と失敗時の処理を両方書けるようになろう

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側は、第一引数で成功時第二引数で失敗時 を受ける
ということを覚えておきましょう