我有一个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>();
}
谢谢!
答案 0 :(得分:1)
是的,你可以(并且应该)摆脱中间层的async
/ await
。
如果您的async
方法只是await
一项任务(而且就是这样),那么async
只会增加开销。