LoginSignup
3
2

More than 5 years have passed since last update.

node.js初心者のPromiseサンプル

Posted at

概要

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
3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2