繁体   English   中英

如何在 web api 方法中调用相互关联的异步方法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM