调用回调后可以访问变量

时间:2017-06-05 22:24:38

标签: javascript node.js

我不想更改现有的API来获取与数据库的连接。签名看起来像

getDBConnection(function(error, DBConnection) {
   // do biz logic
});

我想在getDBConnection

中使用另一个变量
exports.doSomething = function(foo) {
    getDBConnection(function(error, DBConnection) {
        logger.info(foo);
    });
};

但是foo在getDBConnection回调中是未定义的。我有什么办法可以在getDBConnection中访问Foo吗?

1 个答案:

答案 0 :(得分:0)

foo仍在范围内,但在调用回调之前,它可能会被其他一些代码覆盖。您只能为使用IIFE的回调明确创建一个新的foo作用域:

var foo;
getDBConnection((function(foo) {
    return function(error, DBConnection) {
        // foo = whatever it was
    }
})(foo));