我的代码同时创建了两个ajax调用(我认为并行处理会更有效率)。如果两个调用都成功,我想要加载一个表格。这该如何正确地实现呢?
我的代码同时创建了两个ajax调用(我认为并行处理会更有效率)。如果两个调用都成功,我想要加载一个表格。这该如何正确地实现呢?
var succeeded = {};
function callBackOne(){
succeeded.one = true;
// your other stuff
if (succeeded.two) { bothHaveSucceeded());
}
function callBackTwo(){
succeeded.two = true;
// your other stuff
if (succeeded.one) { bothHaveSucceeded());
}
我个人会使用延迟任务:
var success = {
one: false,
two: false
};
// Task
var task = new Ext.util.DelayedTask(function(){
// Check for success
if (success.one && success.two) {
// Callback
doCallback();
} else {
task.delay(500);
}
});
task.delay(500);
// First
Ext.Ajax.request({
...
success: function() {
success.one = true;
}
...
});
// Second
Ext.Ajax.request({
...
success: function() {
success.two = true;
}
...
});
任务
的作用类似于一个线程,它将检查请求的状态,并且每500毫秒休眠
一次,直到它们都完成。
虽然这是一个老问题,但是我碰巧遇到了...
我会使用Caolan的出色的async库,特别是在这里,你需要使用async.parallel。
Github文档中的示例值得一读。
// count variable
var numReturns = 0;
// same call back used for each Ajax request:
function callback() {
numReturns++;
if (numReturns === 2) {
progress();
}
}