【发布时间】:2020-07-23 23:38:48
【问题描述】:
作为一个例子,我有一个 ASP.NET Core API controller 从服务中获取一些数据和 2 实现控制器方法的可能方法:
使用异步/等待:
[HttpGet]
public async Task<IActionResult> GetSomeDataAsync()
{
return await someService.GetSomeDataAsync();
}
没有异步/等待:
[HttpGet]
public Task<IActionResult> GetSomeDataAsync()
{
return someService.GetSomeDataAsync();
}
这两个哪个更好?这里的关键是只有 1 次调用另一个异步方法 (someService.GetSomeDataAsync())。
【问题讨论】:
-
嗯,
asyncawait非常受欢迎,因为它可以很好地处理各种场景,即当不需要异步运行时,它会同步执行。所以我建议使用asyncs。但是您需要注意一些开销,即在使用该模式时创建状态机。 -
尝试在
GetSomeDataAsync中抛出异常并比较堆栈跟踪。我认为一个比另一个更具可读性。
标签: c# asp.net-core async-await