Показать сообщение отдельно
  #1 (permalink)  
Старый 03.03.2013, 07:30
Новичок на форуме
Отправить личное сообщение для PavelX Посмотреть профиль Найти все сообщения от PavelX
 
Регистрация: 03.03.2013
Сообщений: 3

Выполнение асинхронных функций
Доброго времени суток,

Проконсультируйте, пожалуйста, по работе асинхронных функций.
Использую асинхронную API функцию с callback-ом, в котором добавляю один элемент в массив. После нескольких вызовов этой функции массив должен полностью заполниться и быть отправленным с помощью ajax-запроса на другой php-скрипт.
Проблема в том, как сделать чтобы ajax-запрос отсылался только после заполнения массива.
Решил использовать следующий подход (для массива из N элементов):
Массив data - глобальный.
apiasynfunc( function(result){
           data.push(result);
             if(data.length==NUM) ajax-запрос;
          };
apiasynfunc( function(result){
           data.push(result);
             if(data.length==NUM) ajax-запрос;
          };


Таким образом, ajax-запрос будет отправлен только после добавления последнего элемента ( либо из первого callback-а, либо из второго - в зависимости от скорости отработки API-функции).

Вопрос:
Может ли быть такое, что в первом коллбэке элемент добавится в массив, затем по прерыванию еще один элемент добавиться из-за второго коллбэка и во втором коллбэке будет сделан аякс-запрос , после чего управление передастся в первый коллбэк и там тоже будет произведен аякс-запрос?


Судя по просмотру темы
Асинхронный вызов толстых функций
работа функции никак не прерывается, но не полностью разобрался с асинхронными вызовами и потому сомневаюсь.

Буду очень благодарен за ссылку на доступные материалы о механизме асинхронных вызовов.

Спасибо!
Ответить с цитированием