Я делаю приложение на основе angularjs и машинописи, где в конструкторе я вызываю функцию загрузки, например,
private load(): angular.IPromise<void> {
const progTokInit: string = 'initial';
this.$scope.progress.start(progTokInit);
return this.entityService
.load(this.$scope.projectRevisionUid)
.then(resp => {
//Doing foreach and sending employeeModel
// to get the financetype of the person
resp.employeeRates.forEach(employeeModel => this.getFinanceType(employeeModel));
this.refreshCostRate(...resp.employeeRates)
.then(() => // Another Function )
.then(() => // Yet Anothoer Function )
})
}
Здесь мне нужно выбрать финансовый тип человека, для которого, если я отправлю номер МВЗ, я получу данные, поэтому я дал это в функции getFinanceType()
,
private getFinanceType (employeeModel:any) {
this.costService.getFinanceType(employeeModel.person.cost_center.getValue()[0])
.then((result) => {
console.log('res ', result);
employeeModel.financeType = result;
return result;
});
}
Эта функция является асинхронной, поэтому будет максимальная задержка для получения всех соответствующих данных, пока мне не придется ждать, чтобы перейти к следующему шагу, т. Е. Мне нужно вызывать this.refreshCostRate(...resp.employeeRates)
, только если эта текущая функция getFinanceType ()
завершится. его задача полностью ..
Я пытался использовать async / await вроде,
private async getFinanceType (employeeModel:any) {
await return this.costService.getFinanceType(employeeModel.person.cost_center.getValue()[0])
.then((result) => {
console.log('res ', result);
employeeModel.financeType = result;
return result;
});
}
но ничего не помогает, выполнение продолжается, даже если эти данные не были завершены, поэтому я не могу установить данные employeeModel.financeType
в нужное время.
Пожалуйста, помогите мне справиться с этой ситуацией: подождите, пока getFinanceType()
не завершит свою работу, затем после выполнения другой функции и еще одной функции.