Extjs: два параллельных вызова ajax - PullRequest
4 голосов
/ 21 декабря 2010

мой код создает два вызова ajax одновременно (я предполагаю, что параллелизм будет более эффективным). Я хочу загрузить таблицу, если оба вызова завершатся успешно. Как правильно это сделать?

Ответы [ 4 ]

5 голосов
/ 21 декабря 2010
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());
}
1 голос
/ 07 августа 2013

Старый вопрос, но хорошо, когда я наткнулся на него ...

Я бы использовал превосходную библиотеку async от Caolan, особенно здесь вы захотите использовать async.parallel .

Примеры, написанные на GitHub doc, заслуживают прочтения.

https://github.com/caolan/async#parallel

1 голос
/ 21 декабря 2010

Я бы использовал задержанную задачу лично:

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;
   }
   ...
});

Задача acts, как поток, будет проверять состояние запросов и sleep каждые 500 мс, пока они не завершатся.

0 голосов
/ 14 мая 2013

Поделитесь целочисленной переменной, которую проверяет каждый обратный вызов:

// count variable
var numReturns = 0;

// same call back used for each Ajax request:
function callback() {
    numReturns++;
    if (numReturns === 2) {
        progress();
    }
}

Если вам нужны разные обратные вызовы, пусть каждый обратный вызов запускает событие, которое делает то же самое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...