[英]Nesting async/await calls in ASP.NET MVC
我是異步/等待ASP.NET MVC的新手,對此有一個簡短的問題。 我的問題是否有必要在對數據庫的嵌套調用中使用async / await? 例如:
UnitOfWork.cs
public async Task CommitAsync()
{
await _context.SaveChangesAsync();
}
AccountService.cs
public async Task SaveLoginAttemptAsync(LoginAttempt loginAttempt)
{
_appContext.Repository<LoginAttempt>().Add(loginAttempt);
await _appContext.UnitOfWork.CommitAsync();
}
AccountController.cs
//..
var attempt = new LoginAttempt()
{
Email = User.Identity.GetEmail(),
Logintime = DateTime.Now,
Successful = successful ? "Y" : "N",
IpAddress = Request.UserHostAddress,
UserId = Convert.ToInt32(User.Identity.GetUserId())
};
await _accountService.SaveLoginAttemptAsync(attempt);
//..
由於端點使用async / await,是否需要AccountService.cs中SaveLoginAttemptAsync上的async / await方法和AccountController.cs中的代碼塊?
謝謝您的幫助!
是的,使用async / await可以讓烏龜一直降下來。 否則會影響您的調試經驗。
從技術上講,您可以跳過所有“更深層”返回的await
,因為您不依賴該上下文中的返回值。 但是,您並不是真的想要。
如果跳過等待並返回Task
,則該方法在調試時將不在調用堆棧中,因為它實際上正在await
返回的Task上的await
,而不是方法本身的代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.