我最近在Nodejitsu上看過博客,我在想這段代碼是如何工作的。next()如何在Node.js中工作?
var fs = require('fs'),
http = require('http'),
httpProxy = require('../lib/node-http-proxy');
module.exports = function (logging) {
// Code here is run when the middleware is initially loaded.
var logFile = fs.createWriteStream('./requests.log');
return function (request, response, next) {
// Code here is run on each request.
if (logging) {
logFile.write(JSON.stringify(request.headers, true, 2));
}
next();
}
}
而對於這段代碼給出的解釋是:
這個中間件是非常簡單的日誌 - 它將每個請求的標頭寫入日誌文件。
出口可以用作上述模塊,
httpProxy.createServer(
require('./example-middleware')(true),
8000, 'localhost'
).listen(9000)
如何與next()
上述方法的代碼在每個請求中引用?用法非常簡單:需要上述模塊,並且每次都會調用它。當收到請求時,節點將請求傳遞和響應目的是在中間件堆疊中的第一中間件
:
由於節點是單線程的,我想「下一個」只是設置一個超時來在新請求進來時再次調用相同的函數。 –
@ChristopherHarris不完全。 'next()'告訴誰調用這個函數完成它,並且中間件堆棧中的下一個函數應該被調用。 – chesles
@chasles,gratzi。仍然聽起來像它設置超時調用相同的功能。調用堆棧中的「相同」函數可能稍微高於之前的建議。 –