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

标签 javascript amazon-web-services

我正在尝试循环遍历 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/

相关文章:

javascript - 如何显示达拉斯和澳大利亚的当前时间

amazon-web-services - 假设访问角色时出错 arn:aws:iam::1234:role/my-role

amazon-web-services - 子网 ID '10.0.4.0/24' 格式错误(服务 : AmazonEC2; Status Code: 400)

visual-studio-2012 - Entity Framework 5 和 Amazon RDS - "The underlying provider failed on Open."

javascript - 如何实际拦截 res.render

javascript - 为什么这个 onclick 事件在我的脚本中不起作用?

javascript - PHP逻辑到Javascript前端转化成html标签

amazon-web-services - 准备 AWS Certified Solutions Architect - Associate 2017 模式的最佳实践是什么

node.js - AWS Step Function : Function . length() 在选择状态的变量字段中返回错误

javascript - 在node.js中,一组公共(public)数据应该在数据库中还是在类中?