У меня 3 вызова ajax в одной функции и checkAjaxCompletion
, который проверяет каждый флаг завершения ajax.
Код, приведенный ниже, отправляет несколько отдельных вызовов ajax, а интервальный метод проверяет флаги завершения, чтобы определить, следует ли продолжить или сохранить интервал. (Я знаю, что clearInterval не отображается, но дело в том, что я хочу использовать что-то, кроме интервала)
Текущий код:
function manyAjax() {
setInterval( function() { checkAjaxCompletion(); } , 200);
ajax1();
ajax2();
ajax3();
}
function ajax1() {
//send ajax request to server and if success set flag to 1. Default is 0. Error is 2.
}
function ajax2() {
//send ajax request to server and if success set flag to 1. Default is 0. Error is 2.
}
function ajax3() {
//send ajax request to server and if success set flag to 1. Default is 0. Error is 2.
}
function checkAjaxCompletion() {
if(ajax1_flag == 1 && ajax2_flag == 1 && ajax3_flag == 1) {
//everything went success, do some process
}
else if(ajax1_flag == 2 || ajax2_flag == 2 || ajax3_flag == 2) {
//some ajax failed, do some process
}
else {
//all ajax have not been completed so keep interval i.e. do nothing here
}
}
Но я стесняюсь зависеть от использования интервальной функции, потому что ее вызов так часто кажется такой пустой тратой памяти. Там должен быть лучший способ сделать. Я думаю, если observer pattern
можно применить здесь, но хотел бы услышать мнения.