Javascript 在调用回调后访问变量

Javascript 在调用回调后访问变量,javascript,node.js,Javascript,Node.js,有一个我不想更改的现有API,它可以连接到数据库。签名看起来像 getDBConnection(function(error, DBConnection) { // do biz logic }); 我想在getDBConnection中使用另一个变量 exports.doSomething = function(foo) { getDBConnection(function(error, DBConnection) { logger.info(foo);

有一个我不想更改的现有API,它可以连接到数据库。签名看起来像

getDBConnection(function(error, DBConnection) {
   // do biz logic
});
我想在getDBConnection中使用另一个变量

exports.doSomething = function(foo) {
    getDBConnection(function(error, DBConnection) {
        logger.info(foo);
    });
};

但是在getDBConnection回调中没有定义foo。我可以做些什么来访问getDBConnection中的Foo吗

foo
仍在范围内,但在调用回调之前,它可能会被其他代码覆盖。您可以显式地创建一个新的
foo
,其作用域仅限于具有IIFE的回调:

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

这取决于价值的来源。听起来你需要更多的回调。如果
foo
有一个值并且没有阴影,你可以在回调函数中访问它。请提供一段重现您的问题的代码。