Для ожидания того, чтобы не ждать окончания цикла - TypeScript/JavaScript
В моей программе Angular 13 у меня возникла эта ситуация с синхронизацией/асинхронностью, которую я не могу решить. Я вызываю функцию, которая должна вернуть обещание.
В этой вызванной функции мне нужно перебрать массив объектов и для каждого объекта выполнить некоторые действия, включая вызов двух наблюдаемых .
ПередprocessLearnersInvitations
функция разрешается, цикл должен завершиться, и дальнейшие действия над результатами цикла должны быть завершены.
Проблема: эти действия НЕ ЖДУТ завершения цикла (поэтому SuccessCount всегда равен 0).
Как я могу заставить этот сценарий работать?
Вызванное обещание сокращено:
processLearnersInvitations(keyHelperPerson: string, invitingPersons) {
return new Promise(async (resolve,reject) => {
for await (const invitedPerson of invitingPersons) {
var successCounter;
var inviteesNames;
this.tgdb.runQuery('firstQuery...')
.subscribe(
async result => {
this.tgdb.runQuery('secondQuery...')
.subscribe(
async result => {
if (...) {
successCounter++;
} else {
reject();
}
});
});
} //END OF LOOP
if (successCount == invitingPersons.length) {
this.notifyInvitingLearners(invitingPersons, true);
this.dialogs.displayToast('','Wohoo! you are now a trusted helper of ' + inviteesNames + '.', DialogType.Success);
resolve(1);
}
});
}
Вызов вышеуказанной функции:
this.processLearnersInvitations(personKey, invitingPersons).then((resX) => {
console.log('Back from processLearnersInvitations. About to route based on role: ', role);
if ((role>0)&&(resX==1)) {
this.routeBasedOnRole(role);
}
});