gpt4 book ai didi

Javascript 全局变量未在回调中修改

转载 作者:行者123 更新时间:2023-12-03 12:43:44 27 4
gpt4 key购买 nike

我正在尝试循环遍历 S3 存储桶中的每 1000 个元素。这是因为 get 请求最多返回 1000 个元素。如果元素超过 1000 个,则会分页,并且 get 请求返回时,字段调用 IsTruncated 为 true,并传递一个标记 (NextMarker) 元素到下一个调用,让下一个 get 请求从接下来的 1000 个元素开始.

我从 get 请求中获取数据作为回调函数中的参数,并尝试将上述两条信息存储在全局变量中以在外循环中使用。然而,外层循环会无限延伸,因为全局变量在我的 get 请求回调函数中从未被修改。我尝试在回调中使用 window.variable 但无济于事。谁能帮助我重组这段代码以实现我的目标?

谢谢

出于调试目的,外部循环已被注释掉。我使用了一些调试 console.log 语句来确定问题的根源。

               <script type="text/javascript">
s3_bucket = "link_to_s3_bucket";
var go = true;
var marker = "";
//while(go){
console.log('pass');
console.log(s3_bucket + marker);
$.get(
s3_bucket+marker,
"{}",
function(data) {
$(data).find('Key').each(function(i, key) {
key = key.innerHTML;
$("<a />", {
href : s3_bucket+key,
text : key
}).prependTo("#links");
$("<br />").prependTo("#links");
});
window.go = $(data).find('IsTruncated')[0].innerHTML;
window.marker = "&marker=" + $(data).find('NextMarker')[0].innerHTML;
},
"xml"
);
//}
console.log(go);
console.log(marker);

</script>

最佳答案

您的数据从 Amazon 异步返回,因此当您调用这些控制台日志时,这些变量尚未定义。将控制台日志放在变量赋值之后的回调中。

关于Javascript 全局变量未在回调中修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23419246/

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