我正在尝试使用Angular重新创建C#应用程序,但是我正在努力使代码像在c#中那样同步运行。
这里是一个例子:
private void doChecks()
{
if (isInvoiced())
return;
Console.WriteLine("Done");
}
private bool isInvoiced()
{
var invID = Server.GetInvoice(mAccID);
if (invID <= 0)
return false;
else
return someOtherFunction(invID);
}
当我尝试在Angular中实现此功能时,我不确定如何不借助async
await
方法来完成相同的流程。
async doChecks() {
const doAllChecks = await this.service.DoChecks(this.mAcc).toPromise();
if (await this.isInvoiced()) {
return;
}
Console.log("Done");
}
async isInvoiced() {
const invID = await this.service.GetInvoice(this.mAcc).toPromise();
if (invID <= 0)
return false;
else {
const data = await someOtherFunction(invID); // now this function is also going to have to be async to I can await inside of that for its http request to finish.
return data;
}
}
有没有一种方法可以更简单地完成此任务?
答案 0 :(得分:0)
您可以在“ then statement”中一个接一个地运行它。嵌套的承诺。如果您使用的是Angular 2及更高版本,则可以尝试将逻辑嵌套在订阅服务器中,而不是promise。
this.MyPromise1().then(result => {
this.MyPromise2().then(result2 => {
this.MyPromise3().then(result3 => {
and so on..
})
})
});