Dojo树 - 延迟到服务器返回数据

时间:2013-03-02 16:40:44

标签: javascript json dojo

我有一个服务器函数,它生成代表文件系统一部分的JSON。

一旦用户从下拉列表中选择了一个项目,就会调用服务器功能。

到目前为止一切顺利。

我的问题是如何在从服务器返回JSON数据时才显示树?请尽可能详细和完整地回答您的答案,因为我不是任何javascript专业人士!

2 个答案:

答案 0 :(得分:1)

var serverFunctionComplete = false;
var x = serverFunction();
while(!serverFunctionComplete) {
//just waiting
}
setTimeout(function() {
serverFunctionComplete = true;//if the server doesn't respond
}, 5000);

这应该让你开始。

答案 1 :(得分:0)

您可以使用xhr对象中的sync : true属性使ajax请求同步。这将阻止其他代码执行,直到从服务器收到响应并且回执完成为止。

require(["dojo/request/xhr"], function(xhr){
  xhr("example.json", {
    handleAs: "json",
    sync: true
  }).then(function(data){
    // Do something with the handled data
  }, function(err){
    // Handle the error condition
  }, function(evt){
    // Handle a progress event from the request if the
    // browser supports XHR2
  });
});

然而,这通常不是异步加载的最佳实践,因为它是javascript和ajax的优点之一。建议在xhr中的回调函数中显示您的树,这样您的脚本就不会挂起轮询响应。

require(["dojo/request/xhr"], function(xhr){
  xhr("example.json", {
    handleAs: "json"
  }).then(function(data){
    // Display your Tree!
  }, function(err){
    // Handle the error condition
  });
});

有关常规异步线程管理,请参阅Dojo's Deffered class.