說我有方法,像這樣:在異步函數中,爲什麼我必須等待?
private async Task SomeMethod()
{
await DoSomethingAsync();
await DoSomethingElseAsync();
return;
}
鑑於DoSomethingElseAsync
返回Task
它似乎像你應該能夠做到這一點:
private async Task SomeMethod()
{
await DoSomethingAsync();
return DoSomethingElseAsync();
}
但編譯器抱怨這一點:
由於'
SomeMethod
'是返回'Task
'的異步方法,因此返回關鍵字不得後面跟着一個對象表達式。你打算返回'Task<T>
'嗎?
這是爲什麼?
@YvetteColomb它不是* this *問題的確切副本。 OP不詢問何時使用await。這問''爲什麼我不能返回任務?' –
@YvetteColomb這不是重複的,你所指的問題是什麼時候使用await,這個問是爲什麼第二個方法不能簡單地返回而不是寫await,我認爲英語非常明確地認定這兩者是不同的。 –
在第一個'await DoSomethingAsync();'完成之前 - 方法已經返回給調用者(畢竟它是異步方法)。所以在'await'之後你無法返回特定的值 - 調用者此時已經收到一個返回值並向前移動。 – Evk