Доброго времени суток,
Проконсультируйте, пожалуйста, по работе асинхронных функций.
Использую асинхронную 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-функции).
Вопрос:
Может ли быть такое, что в первом коллбэке элемент добавится в массив, затем по прерыванию еще один элемент добавиться из-за второго коллбэка и во втором коллбэке будет сделан аякс-запрос , после чего управление передастся в первый коллбэк и там тоже будет произведен аякс-запрос?
Судя по просмотру темы
Асинхронный вызов толстых функций
работа функции никак не прерывается, но не полностью разобрался с асинхронными вызовами и потому сомневаюсь.
Буду очень благодарен за ссылку на доступные материалы о механизме асинхронных вызовов.
Спасибо!