javascript ждет многократного ответа aynax async не работает

Двумя способами:

1.

for row in session.execute(session.query(User).statement):
    print(dict(row))

2.

selected_columns = User.__table__.columns
rows = session.query(User).with_entities(*selected_columns).all()
for row in rows :
    print(row._asdict())
2
задан user2636593 13 July 2018 в 05:17
поделиться

2 ответа

Promise.all([ajaxCall1, ..., ajaxCallN]).then(responseArray => {})
-2
ответ дан MMaks 17 August 2018 в 13:39
поделиться
  • 1
    Чтобы вызывать функции, вы должны использовать круглые скобки вокруг списков параметров. – CertainPerformance 13 July 2018 в 05:29

Наконец, я смог его решить. Благодаря Zim84 ваш указатель фактически решил мою проблему, kudos !!

var results_array = [];
var num = 0;

var promises = [];
console.log(ldap_data);
ldap_cmd_array.forEach(element => {
    var myldap = ldap_data.slice(); //to copy a javascript object
    myldap.push({
        "name": "cmd",
        "value": element
    });
    var dObject = new $.Deferred();
    console.log(++num);
    promises.push(dObject);
    ajaxCall(myldap, 'taaa',
        // success callback
        function (data) {
            console.log(--num);
            dObject.resolve();
            results_array.push(data);
            console.log('pass');
        },
        //error callback
        function (err) {
            //Do nothing
            dObject.resolve();
            console.log(--num);
            console.log('fail');
        }
    );
});
$.when.apply($, promises)
    .then(function () {
        console.log('I should print after all promises');
        console.log(results_array);
    });

0
ответ дан user2636593 17 August 2018 в 13:39
поделиться
  • 1
    Спасибо всем, кто потратил ваше драгоценное время, чтобы помочь мне. Вы замечательные люди. Спасибо !! – user2636593 13 July 2018 в 09:18
  • 2
    Это излишне сложно. $.ajax уже возвращает обещание. Используйте это вместо этого. Если ajaxCall вернул обещание, возвращенное $.ajax, тогда ваш код может быть просто Promise.all(ldap_cmd_array.map(element => { /*... */ return ajaxCall(myldap, 'taaa').catch(() => null); })).then(results_array => console.log(results_array)); Нет необходимости в создании отложенного объекта или использовании обратных вызовов. – Felix Kling 13 July 2018 в 16:26
Другие вопросы по тегам:

Похожие вопросы: