То, что вы могли бы сделать, это вместо работы с Observables здесь, работать с Promises, так как они могут быть объединены с async / await, который обеспечивает синхронный поток кода.
public async overallMasterFunction(){
executeMemberSetup();
let price = await calculatePriceAPI(); // Wait for this API line to complete, and conduct further steps
let totalAmount = price * this.quantity;
console.log('Sales Completed')
}
calculatePriceAPI(): Promise<any> {
return this.customerSalesProxy.getPrice().toPromise();
}
Обратите внимание на asyn c в сигнатуре метода, которая сигнализирует, что эта функция выполняет асинхронную связь и позволяет использовать ключевое слово await внутри. Await убедится, что Обещание выполнено, прежде чем перейти к следующей строке. Это снова должно казаться очень естественным, поскольку теперь это в основном синхронный код.
Однако в большинстве случаев вам будет хорошо без async / await и в полной мере используйте Obserables и асинхронную связь в целом.
Найдите приведенный ниже пример:
public overallMasterFunction(){
executeMemberSetup();
let price = calculatePriceAPI().subscribe(price => {
let totalAmount = price * this.quantity;
console.log('Sales Completed')
});
}
calculatePriceAPI(): Observable<any> {
this.customerSalesProxy.getPrice();
}
Из вашего API просто верните Observable, чтобы ваш код мог реагировать на него с его подписью. Затем, в рамках этой подписки, вы можете использовать цену и записать что-то на консоль, как только все будет закончено.