我在更新節點應用程序中的全局變量時遇到問題。有人可以看我的代碼,並讓我知道發生了什麼問題嗎?我定義了一個dowhile循環來運行,只要我的HTTP響應對象沒有定義「next」。在循環內部,事情按預期運行並定義了new_json.next,但while條件返回錯誤,因爲new_json.next在那裏未定義。我有點新的Javascript,所以不知何故,我的變量範圍是關閉的,但我不知道如何正確地做的事情根據其他問題。更新Javascript中的全局變量時遇到問題
function make_pagination_request(json, create_response_data) {
var new_json={};
do {
var options = {
host: slug + '.nationbuilder.com', //should be replaced to be site-agnostic
path: json.next,
method: "GET",
json: true,
headers: {
"content-type": "application/json",
"accept": "application/json"
},
}
var req = https.get(options, req_callback);
function req_callback(response) {
response.on('data', function(chunk) {
str += chunk;
});
response.on('end', function(new_json) {
new_json=JSON.parse(str);
new_results = new_json.results
results= results.concat(new_results);
console.log("combinedlength: " + results.length)
console.log(new_json.next);
});
}
} while (new_json.next.includes("api"));
我應該知道這是類似的東西。這是我纔開始理解的,也是我其他一些問題的根源。我最終只是簡單地從本身的最後調用函數make_pagination_request。 –
Javascript代碼和包含在該語言中的同步構造的異步性質一直是很多程序員的一個很大的問題來源。我在你的評論中看到,你設法通過再次調用相同的函數來解決問題。即使它工作,我建議你研究一個更好的解決方案,因爲如果函數調用自己多次,你將會遇到堆棧溢出問題。 – yeiniel
我以爲我已經達到堆棧溢出問題 –