簡體   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