在javascript中完成的功能

时间:2014-11-06 03:39:18

标签: javascript node.js

实际上我正在阅读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);
    });
};

1 个答案:

答案 0 :(得分:1)

该行只是函数定义的开始。 function(done)只是意味着当调用此函数时,应该使用一个参数调用它,并且在执行函数期间,该参数将被称为done

更具体地说,我认为它与中间件有关(你在这里使用express.js吗?)。如果你有快速的一堆中间件函数,快递路由器将为你调用这些函数,并传入一个函数作为参数,当被调用时,将请求传递给下一个中间件函数。看起来这就是这里发生的事情,因为done在函数结束时被调用。

Node.js有这样的东西,因为它都是异步的,所以你不能使用return语句。