在我的应用程序启动时,我需要发送三个ajax get(Dojo xhrGET)请求,但问题是我需要在第一次处理数据时发送第二个,在第二个处理数据时发送第三个(顺序很重要! )。我把这个请求放在另外一个但有时候不起作用。如何同步和解决这个问题,有没有办法在Java中锁定或等待?
答案 0 :(得分:1)
您可以使用选项sync
= true
,并将请求置于其他位置。有了这个,第3次将在第1次之后发送。
或者你可以在第一次使用加载功能完成后发送第二个请求。
例如:
dojo.xhrGet({ //1st request
load: function(){
dojo.xhrGet({ //2nd request
load: function(){
dojo.xhrGet({ //3nd request
});
}
});
}
});
有关详细信息:http://dojotoolkit.org/reference-guide/dojo/xhrGet.html
答案 1 :(得分:1)
如果您使用的是1.6,请查看新的Promises API(由dojo.xhrGet
返回),或使用1.5中的延迟。他们提供了一种“整洁”的方式来实现这一目标。
基本上你可以写:
dojo.xhrGet({
url: './_data/states.json',
handleAs: 'json'
}).then(
function(response) {
// Response is the XHR response
console.log(response);
dojo.xhrGet({
url: './_data/'+response.identifier+'.json',
handleAs: 'json'
}).then(
function(response2) {
// The second XHR will fail
},
// Use the error function directly
errorFun
)
},
function(errResponse) {
// Create a function to handle the response
errorFun(err);
}
)
var errorFun = function(err) {
console.log(err);
}
有关详细信息,请参阅http://dojotoolkit.org/documentation/tutorials/1.6/deferreds/和http://dojotoolkit.org/documentation/tutorials/1.6/promises/
答案 2 :(得分:0)
我们可以在第一个请求的成功回调方法中发出第二个ajax请求: $就({
'type' : 'get', // change if needed
'dataType' : 'text', // data type you're expecting
'data' : { 'className' : divClass },
'url' : url,
'success' : function(newClass) {
//make the second ajax request...
}
});
为第三个请求做同样的事情。