我应该在退货时使用等待吗?

时间:2013-11-07 07:07:18

标签: asp.net-mvc asynchronous async-await

我有一个MVC Web应用程序,控制器操作调用业务层中的代码,而后者又调用API:

public async Task<ActionResult> TestAction(){
   Info something = await businessLayer.GetInfoAsync();
   return View(something);
}
业务层中的

我将GetInfoAsync定义如下:

public async Task<Info> GetInfoAsync(){
   return await myLib.GetAsync<Info>();
}

在我的库中,我将GetAsync定义如下:

public async Task<T> GetAsync(){
   //do something
   var data = await aService.Get<T>();
   return data;
}

正如您在上面看到的,GetInfoAsync方法只是调用myLib.GetAsync并返回myLib.GetAsync返回的任何值。 我可以摆脱GetInfoAsync的async / await,并按如下方式定义:

public Task<Info> GetInfoAsync(){
   return myLib.GetAsync<Info>();
}

谢谢!

1 个答案:

答案 0 :(得分:1)

是的,你可以(并且应该)摆脱中间层的async / await

如果您的async方法只是await一项任务(而且就是这样),那么async只会增加开销。