我有一个服务器函数,它生成代表文件系统一部分的 JSON。
一旦用户从下拉列表中选择了一个项目,就会调用服务器函数。
到目前为止,一切都很好。
我的问题是如何仅在从服务器返回 JSON 数据时显示树?请让您的回答尽可能详细和完整,因为无论如何我都不是 javascript 专业人士!
我有一个服务器函数,它生成代表文件系统一部分的 JSON。
一旦用户从下拉列表中选择了一个项目,就会调用服务器函数。
到目前为止,一切都很好。
我的问题是如何仅在从服务器返回 JSON 数据时显示树?请让您的回答尽可能详细和完整,因为无论如何我都不是 javascript 专业人士!
var serverFunctionComplete = false;
var x = serverFunction();
while(!serverFunctionComplete) {
//just waiting
}
setTimeout(function() {
serverFunctionComplete = true;//if the server doesn't respond
}, 5000);
这应该让你开始。
sync : true
您可以使用xhr 对象中的属性使 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 的 Defered 类。