[英]How to call inter related async method within a web api method
我有一个 web api 方法需要从另一方调用 2 个异步方法,并且需要第一个异步方法的结果才能调用第二个异步方法。 我有类似下面的代码,它显然不像 await 关键字那样工作,我的理解是它将转到下一行并继续,同时将一个 Task 对象返回给调用者。
我需要从这个方法中简单解释一下,我需要从第三方异步方法获取令牌,之后,基于令牌,我需要做一些事情,然后使用令牌调用另一个 aysnc 方法再次来自第三方。
public async Task<ResponseObj> DoSomething()
{
var token = await GetTokenAsync();
DoStuff1();
var stuff = await CreateStuff(token);
SaveStuff(stuff);
ResponseObj response = new ResponseObj(stuff);
return response;
}
我在网上阅读了一些文章和示例,有些人说我可以使用 Task.Result 而不是 await,这样下一个依赖调用不会运行,直到任务返回结果,有些人使用 Task.Wait 并且看起来像它将等到任务完成。 我已经尝试了这两种方法,但都没有达到我的预期结果,在我从 GetTokenAsync 获得结果之前,CreateStuffAsync 无法启动。
有人能指出我做错了什么吗? 假设第一个 await 已经将任务返回给调用者,那么当到达第二个 await 时会发生什么? 我不应该在方法中等待超过 1 个,尤其是当一个依赖另一个时?
该代码在等待第一个async
调用、获取结果然后继续第二个async
调用的意义上是正确的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.