gpt4 book ai didi

javascript - 对象初始化问题 - 函数内部不为 null,但退出函数时为 null

转载 作者:行者123 更新时间:2023-11-28 21:24:22 24 4
gpt4 key购买 nike

我有这样的代码(我已经使用 Dojo 进行类):

var current_div=null;
var current_element=null;
var elements_container=null;
var status_container=null;

function main(){
//alert(status_container==null);
load_status_system();
//alert(status_container==null);
load_ring_topology();
//alert(status_container==null);
}

在load_status_system内部设置函数load_status_system(){

 dojo.xhrGet({
url: "dynamic/status-system.json",
handleAs: "json",
load: function(obj) {
status_container=new STATUS_CONTAINER(obj);
alert(status_container==null);
},
error: function(err) {
alert('error during loading status-system.json');
}
});
}

问题是我在函数外部得到 status_container null,但在函数内部它不为 null。这段代码有什么问题?如何在函数外初始化status_container不为空?

最佳答案

您的范围界定似乎没问题。我认为您正在努力解决 Ajax 调用的异步性质。

正如发布的那样,代码的执行顺序如下:

  1. 函数主要
  2. main => load_status_system()
  3. load_status_system => dojo.xhrGet
  4. main => load_ring_topology()
  5. 函数 main 完成并退出(status_container 仍为 null)
  6. dojo.xhrGet 接收其响应,调用 load()
  7. load => 填充status_container
  8. load 提醒新的 status_container 并退出。
  9. 您的代码已完成运行

问题的解决方案是告诉xhrGet同步进行调用。我从未使用过 Dojo,所以我不知道该怎么做。通常,这是通过将 XHR 对象的 async 属性设置为 false 来完成的。

关于javascript - 对象初始化问题 - 函数内部不为 null,但退出函数时为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5430194/

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