Мне нужно сделать вызов API (основной вызов API), который зависит от результата нескольких других вызовов API (дочерних вызовов), но я не могу выполнить желаемое, так как результат дочерних вызовов не будет доступен в данный моментя делаю основной вызов API из-за асинхронного выполнения.
Вот мой код (что я пробовал) -
Сервисная функция Http -
async fetchShift(shiftName: string): Promise<any> {
const res = await this.httpClient.get(this.systemConfig.UIBACKEND_API_URL + '/api/v1/shift/find/' + shiftName).toPromise();
return res;
}
Промежуточная функция -
async formAssociateProduct(sheetAllRows): Promise<any> {
var promise = new Promise((resolve, reject) => {
for (let i: number = 0; i < sheetAllRows.length; i++) {
//Child api calls
this.fetchShift("A").then(data => {
this.listOfAssociatedProduct.push(data);
});
}
resolve();
});
return promise;
}
ВызывающийФункция-
upload(event) {
console.log(event);
var me = this;
var reader = new FileReader();
var file = event.target.files[0];
reader.onload = function (event) {
var workbook = XLSX.read(event.target.result, {
type: 'binary'
});
var sheetAllRows = XLSX.utils.sheet_to_json(workbook.Sheets["Sheet1"]);
me.formAssociateProduct(sheetAllRows).then(
data => {
//Main Api Call
me.httpClient.post(me.systemConfig.UIBACKEND_API_URL + '/api/v1/products/upload', me.listOfAssociatedProduct).subscribe(data => {
});
}
); };
reader.readAsBinaryString(file);
}
Я нахожу список пустым в обратном вызове then (), необходимом для вызова Main api.Пожалуйста, помогите.