0

我有一个 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 的异步/等待,并将其定义如下:

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

谢谢 !

4

1 回答 1

1

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

如果您的async方法只是await执行单个任务(仅此而已),那么async只会增加开销。

于 2013-11-07T13:17:35.373 回答