Следующая функция возвращает Обещание до разрешения this.codesService.getCostCodes()
, что приводит к неопределенности
async getTopParentByChildId(id: string) {
let parent;
await this.codesService.getCostCodes().subscribe( data => {
parent = data.body[0];
});
return new Promise<BidItem>(resolve => { //returning `parent` results in the same issue
resolve(parent);
});
}
getTopParentByChildId()
вызывается другой асинхронной функцией, которая имеет ту же проблему, где она возвращает неопределенное значение перед разрешением асинхронного вызова:
async populateBidItemObjectArray(node){
const parent = await this.getTopParentByChildId(node.id); //should wait for function to return before executing the rest
const bidItem = {
name: parent.name,
id: parent.id
};
return new Promise<BidItem>(resolve => { //returns undefined before this.getTopParentByChildId is resolved
resolve(parent);
});
}
Я много читал об асинхронных / ожидающих и обещаниях, но ни одно из решений, которые я пробовал, до сих пор не работало для меня. Я не могу понять, почему он не ожидает разрешения асинхронных функций при использовании ключевых слов async / await.