Двумя способами:
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())
Promise.all([ajaxCall1, ..., ajaxCallN]).then(responseArray => {})
Наконец, я смог его решить. Благодаря 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);
});
$.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