30144


connectモジュールを使って、順次処理をしていくとします。

[code]

    var connect = require('connect');
    
    connect()
        .use(funcA)
        .use(funcB)
        .use(funcC);
        .listen(3000);
    
[/code]

ここで、funcAの処理の内容によって、funcBを経由せずにfuncCに行くことは可能でしょうか？


CC BY-SA 3.0
2016-08-02T05:28:46.143
28012
2016-11-06T14:52:47.900
2016-08-03T01:49:11.633
14288
14288
question
javascript node.js
node.jsのconnectモジュールでミドルウェアの順番を動的に変えることは可能か？


簡潔に言えば、それはできません。それぞれの函数の呼び出しは独立からです。

独立とは、

[code]

    var connect = require('connect');
    
    connect().use(funcA).use(funcB).use(funcC).listen(3000);
    
[/code]

と

[code]

    var connect = require('connect');
    
    var tmp1 = connect();
    var tmp2 = tmp1.use(funcA)
    var tmp3 = tmp2.use(funcB)
    var tmp4 = tmp3.use(funcC)
    tmp4.listen(3000);
    
[/code]

とが等価であること。

* * *

ですが、ECMAScript6に導入されたPromiseオブジェクトを使えばできるかも知れませんが、いい方法とは思えません。

funcAとfuncBとfuncCの処理を一つの関数にまとめてはどう思いますか。それなら、処理の流れはよく管理できるようになるのではないでしょうか。


CC BY-SA 3.0
2016-11-06T14:52:47.900
30144
2016-11-06T14:52:47.900
13664
28012
answer