实际上我正在阅读Nodejs中的一些代码,但我无法理解它的含义,因为我不太了解function
的一些常见用法。有人能告诉我function(done)
的含义吗?这是回调还是什么?在js文件中,我看不到done
的定义。感谢
安第斯山脉
var getRedisUri = exports.getRedisUri = function (done) {
if (process.env.CLUSTER_CONFIG_URI) {
return done(null, process.env.CLUSTER_CONFIG_URI);
}
//redis uri
Fs.readFile(
'/opt/redis_uri',
{encoding: 'utf8'},
function (err, redis_uri_data) {
if (err) {return done(err);}
var redis_uri = redis_uri_data.toString();
if (process.env.NODE_ENV !== 'production' &&
process.env.VM_DOMAIN &&
(redis_uri.indexOf('localhost') !== -1 || redis_uri.indexOf('127.0.0.1') !== -1)) {
redis_uri = redis_uri.replace('localhost', process.env.VM_DOMAIN);
redis_uri = redis_uri.replace('127.0.0.1', process.env.VM_DOMAIN);
}
done(null, redis_uri);
});
};
答案 0 :(得分:1)
该行只是函数定义的开始。 function(done)
只是意味着当调用此函数时,应该使用一个参数调用它,并且在执行函数期间,该参数将被称为done
。
更具体地说,我认为它与中间件有关(你在这里使用express.js吗?)。如果你有快速的一堆中间件函数,快递路由器将为你调用这些函数,并传入一个函数作为参数,当被调用时,将请求传递给下一个中间件函数。看起来这就是这里发生的事情,因为done
在函数结束时被调用。
Node.js有这样的东西,因为它都是异步的,所以你不能使用return
语句。