событие триггера после нескольких вызовов ajax - PullRequest
2 голосов
/ 21 июля 2010

Интересно, какой из подходов лучше всего инициировать событие после нескольких (неупорядоченных) вызовов ajax?

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

Интересно, а.) Для этого есть общий шаблон, б.) это можно сделать с помощью Reactive Extensions для JavaScript (RxJs) или c.) с собственными функциями jquery.

Любая помощь приветствуется!

Ответы [ 3 ]

3 голосов
/ 22 июля 2010

RxJS позволит вам сделать это с помощью оператора ForkJoin, этот оператор принимает N наблюдаемых со значением и создает одну наблюдаемую, которая запускается с массивом, когда все N наблюдаемых завершены.

См. Сообщение в блоге Мэтью Подвизоки оэтот оператор: http://codebetter.com/blogs/matthew.podwysocki/archive/2010/04/23/introduction-to-the-reactive-extensions-for-javascript-going-parallel-with-forkjoin.aspx

1 голос
/ 21 июля 2010

Вы должны взглянуть на .ajaxStop () .

Однако, это callback будет срабатывать при каждом отдельном запросе ajax, который завершается.Таким образом, чтобы узнать, когда ваш последний запрос завершен, вам нужно либо вызвать .ajaxStart () aswell, либо вам нужно повторять global variable для каждого запускаемого вами запроса и decrement это на .ajaxStop().Если эта переменная достигает значения zero, все ваши запросы выполнены.

0 голосов
/ 21 июля 2010

Если вы знаете, сколько звонков делается, установите для этого числа переменную и уменьшайте ее каждый раз, когда происходит событие завершения AJAX.Когда переменная достигает нуля, происходит SomethingGreat.

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