gpt4 book ai didi

javascript - 在 Javascript 中更新全局变量时遇到问题

转载 作者:行者123 更新时间:2023-12-03 04:33:25 25 4
gpt4 key购买 nike

我在更新 Node 应用程序中的全局变量时遇到问题。有人可以查看我的代码并让我知道出了什么问题吗?我定义了一个 dowhile 循环,只要我的 HTTP 响应对象没有定义“next”,它就会运行。在循环内部,事情按预期运行,并且定义了 new_json.next,但 while 条件返回错误,因为 new_json.next 在那里未定义。我对 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"));

最佳答案

问题在于 HTTPs 请求是异步的,而 do/while 循环是同步的。在这种情况下,在将包含 next 的值分配给 new_json 变量之前到达 while 语句。

第一次到达 while 语句时,回调函数尚未被调用。因此 new_json 的值为 {}(初始值),并且缺少 next。因此您遇到的错误。

但解决方案不是修复 new_json 的初始值。解决方案是删除 do/while 循环并继续在 HTTPs 请求回调中工作。

关于javascript - 在 Javascript 中更新全局变量时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43397741/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com