0
我工作的一個功能管線有點類似於連接與使用/快遞請求管道()..功能管線
請求處理程序通過使用添加的功能堆棧上運行.use()函數。異步,因爲必須調用n()函數才能繼續。
使用熟悉的(req,res,next)調用函數。這是有效的,但是它最後添加的第一個被執行,這讓我感到困惑,我想先添加第一個執行。這適用於最後在和整個管道繼續R,S引用..
(我用R,S,而不是REQ,資源在這些例子..)
var s = {
chain: function(r, s, n){
// this runs last, was first added
s.end();
},
use: function (f){
this.chain = (function(nxt){
return function(r, s, n){
f(r, s, nxt.bind(this, r, s));
}
})(this.chain);
},
listen: function(){
this.use(function (r, s, n){
// this runs first, was last added
n();
})
var svr = require('http').createServer(this.chain);
svr.listen.apply(svr, [].slice.call(arguments)); // accept same args
}
}
s.use(function(r,s,n){...});
s.use(function(r,s,n){...});
s.listen(8080);
這裏是在FIFO的嘗試。但它不起作用。想法?
var chain = function(r, s, n){
console.log(1, arguments);
n();
};
function use(f){
var th = chain;
chain = (function(nxt){
return function(r, s){
th(r, s, nxt);
}
})(f);
}
use(function(r, s, n){
console.log(2, arguments)
n();
})
use(function(r, s, n){
console.log(3, arguments)
n();
})
chain(0,1);
想要的東西,不使用循環運行通過功能。