是否存在任何这样的情况,需要编写像这样的方法:
public async Task<SomeResult> DoSomethingAsync()
{
// Some synchronous code might or might not be here... //
return await DoAnotherThingAsync();
}
不是这样做:
public Task<SomeResult> DoSomethingAsync()
{
// Some synchronous code might or might not be here... //
return DoAnotherThingAsync();
}
这样说是否合理呢?
为什么要使用return await
结构,当你可以直接从内部的DoAnotherThingAsync()
调用中返回Task<T>
?
我看到很多地方都有return await
的代码,我想我可能漏掉了什么。但据我所知,在这种情况下不使用async/await关键字,直接返回任务(Task)也是功能等效的。为什么要增加额外的await
层的开销呢?
DoAnotherThingAsync
使用async/await编写,则此处的async/await是多余的,并且异常传播没有区别。DoAnotherThingAsync
已经实现了捕获任何抛出的异常并将其嵌入返回的Task的状态机。您唯一需要在此处添加async/await的时间是,如果调用的方法DoAnotherThingAsync
不使用async/await并且可能会引发异常。在这种情况下,可能会在返回任务之前抛出异常,从而改变所需的错误处理方法。那真的是唯一的区别。 - Triynko