node.jsのconnectモジュールでミドルウェアの順番を動的に変えることは可能か?

投稿者: Anonymous

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

var connect = require('connect');

connect()
    .use(funcA)
    .use(funcB)
    .use(funcC);
    .listen(3000);

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

解決

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

独立とは、

var connect = require('connect');

connect().use(funcA).use(funcB).use(funcC).listen(3000);

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);

とが等価であること。


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

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

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *