JQuery обратный вызов, когда 3 метода завершены?

0

У меня есть 3 функции JS:

func1 ()
{
    $.ajax(...,callback1)
}


func2 ()
{
    $.ajax(...,callback2)
}


func3 ()
{
    $.ajax(...,callback3)
}

Они выполняются следующим образом:

func1();
func2();
func3();

Вопрос: Как я могу выполнить mySummaryCallback() после того, как все 3 done?

NB

Я мог бы использовать функцию обратного вызова закрытия, которая увеличивает значение, а затем выполняет. но я не могу коснуться функций обратного вызова ajax. (qaru.site/questions/364239/...)

Теги:

5 ответов

3
Лучший ответ

Используйте $.when(), чтобы сделать это для всех ваших методов, чтобы вернуть объект обещания обратно вызывающему абоненту

func1() {
    return $.ajax(..., callback1)
}


func2() {
    return $.ajax(..., callback2)
}


func3() {
    return $.ajax(..., callback3)
}

$.when(func1(), func2(), func3()).done(function () {
    //all are success
}).fail(function(){
    //atleast one failed
}).always(function(){
    //all are completed
})
  • 0
    Ваше редактирование помогло мне ... так что, when сигналы, когда они все разрешены, а затем они (все результаты) отфильтрованы к одному обратному вызову сделано / сбой / всегда .... правильно?
  • 0
    @RoyiNamir да ... always вызывается в любом случае ... вместе с done и fail
Показать ещё 1 комментарий
2

Интерфейс возвращаемого обещания, отображаемый каждым запросом ajax, из ваших функций и использования метода $.when() jquery:

func1 ()
{
    return $.ajax(...,callback1)
}


func2 ()
{
    return $.ajax(...,callback2)
}


func3 ()
{
    return $.ajax(...,callback3)
}

$.when(func1(),func2(),func3()).done(/*callback*/);
  • 0
    Имеют ли When сигналы , когда все они complete или done ?
  • 0
    когда сделано (успех), для полного использования всегда () и для использования ошибки сбой ()
Показать ещё 5 комментариев
0

Я думаю, что вы можете использовать jQuery Deferred в этой ситуации

0

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

func2 ()
{
    $.ajax(..., function() {
        //call your callback here
        callback2();

        //increase your counter here once it done ...
    });
}

Это то, что вы хотели?

0

Один из способов - синхронизировать все вызовы Ajax, а затем вам нужно позвонить в BigCallback

В противном случае вам нужно проверить, что такое состояние (0- для инициированного запроса, до 4) последнего Ajax, после чего вы можете действовать согласно.

  • 0
    синхронизировал все Ajax ..... Если у вас нет ответа, пожалуйста, не

Ещё вопросы

Сообщество Overcoder
Наверх
Меню