我有一个服务器函数,它生成代表文件系统一部分的JSON。
一旦用户从下拉列表中选择了一个项目,就会调用服务器功能。
到目前为止一切顺利。
我的问题是如何在从服务器返回JSON数据时才显示树?请尽可能详细和完整地回答您的答案,因为我不是任何javascript专业人士!
答案 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.