-1
我有一個回調函數,其中包含另一個回調的for循環。節點/ Javascript - 多個回調和循環內的變量訪問
我很難理解變量的範圍。我需要在整個嵌套結構訪問out
變量:
var out = {"foo":123};
persistence.getAllApiKeys(function(err, allKeys){
for (var prop in allKeys) {
out = {"baz":456};
persistence.getApiKeyValue("test", function(err2, value) {
out = {"success":true}; // <--does not update
});
}
console.log(out);
})
輸出:
{ baz: 456 }
如何才能獲得最終的回調裏面出來的變量?即將其設置爲"success":true
?
當你調用'console.log(out)'時,'getApiKeyValue'函數是異步的;'第二個調用很可能等待API的響應,所以'out = {「success」:true} ;'分配將在稍後執行。 – halfzebra
異步,異步,異步。當你瞭解異步回調以及它們在一段時間後運行的事實時,你就會明白爲什麼你的'out'變量在你登錄時還沒有被設置。您的問題與範圍無關,與您的異步回調時間無關。您只能在回調中使用異步結果,表明其完成。你可以閱讀這個更多的信息:[如何從ajax調用返回響應](http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-asynchronous-call)。 – jfriend00