概要
node.jsを今更始めたので、callbackではなくPromiseベースで勉強中。
勉強がてら書いた簡単なPromiseベースなコードサンプルをメモ
サンプル
//
//Promiseの練習用
//
// Promise1つだけのケース
// 引数をそのまま次のfunctionに渡すだけ
var return_number = function(num){
return new Promise(function(onFulfilled, onRejected){
onFulfilled(num);
});
};
// Promiseを連鎖するケース1
// return_numberの返り値に引数を追加するだけ
var add_number = function(add_num){
return new Promise(function(onFulfilled, onRejected){
return_number(1)
.then(function(num){
onFulfilled(num + add_num);
});
});
};
// Promiseを連鎖するケース2
// mul_numberの返り値に引数をかけるだけ
var mul_number = function(mul_num){
return new Promise(function(onFulfilled, onRejected){
return_number(1)
.then(function(ret_num){
add_number(ret_num)
.then(function(add_result){
add_result = add_result * mul_num;
onFulfilled(add_result);
});
});
});
};
// 実行
return_number(1)
.then(function(num){
console.log(num);
});
// -> 1
add_number(2)
.then(function(num){
console.log(num);
});
// -> 3
mul_number(3)
.then(function(num){
console.log(num);
});
// -> 6
コードの説明
最終的なmul_numberメソッドのやっていることは、単純に
(1 + 1) * 2 = 6
をやっているのみで、処理を分解すると以下のようになる。
mul_number 2
= (add_number 1) * 2
= ((return_number 1) + 1) * 2
= (1 + 1) * 2