Подождите, пока завершится несколько ajax, но функция ajax динамически вызывается - PullRequest
0 голосов
/ 03 ноября 2018

Я хочу подождать, пока несколько аяксов закончены Я проверил несколько страниц и получил идеи

$.when ().done(funciton(){})....

Однако в моем случае это немного сложно. ajax генерируется динамически и является методом класса.

class TestClass{
    constructor(){} 
    myAjax = function(id){
        $.ajax({
            url:  myajax,
            type: 'POST',dataType: 'json',
            data: {"id" : id},
            success: function(data) {
                console.log("byId loaded:"+ id);
            }
        });
    }
}
testclass = new TestClass();
var myIds = [1,3,5,7];
for (var i in myIds) {
    testclass.myAjax(myIds[i]); // I want to wait every ajax is finished.
}

Я пытался так, используя $ .when (), но напрасно (ошибка компиляции)

$.when(
for (var i in myIds) {
    testclass.callGraph(myIds[i]); .

).done(function(){
    console.log("load finished");
}

1 Ответ

0 голосов
/ 03 ноября 2018

Попробуйте это

class TestClass{
    constructor(){} 
    myAjax = function(id){
        return $.ajax({
            url:  myajax,
            type: 'POST',dataType: 'json',
            data: {"id" : id},
            success: function(data) {
                console.log("byId loaded:"+ id);
            }
        });
    }
}
testclass = new TestClass();
var promises = [];
var myIds = [1,3,5,7];
for (var i in myIds) {
    promises.push(testclass.myAjax(myIds[i])); // I want to wait every ajax is finished.
}

$.when(promises).then(function(values){
   console.log('all ajax request completed');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...