2017-06-05 51 views
0

有一個現有的API,我寧願不更改它獲取到數據庫的連接。簽名看起來像在調用回調之後可以訪問變量

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

有,我想內getDBConnection

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

使用另一個變量foo的,但在getDBConnection回調不確定的。我能做些什麼來獲得getDBConnection中的Foo嗎?

+0

這取決於值的來源。這聽起來像你需要更多的回調。 – SLaks

+0

如果'foo'有一個值並且沒有被屏蔽,你可以在回調函數中訪問它。請提供一段代碼來重現您的問題。 – trincot

回答

0

foo仍然在範圍內,但也許在調用回調之前它會被其他代碼覆蓋。您可以明確地創建一個新的foo作用域,僅用於使用IIFE進行回調:

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