在我正在做的一个项目中,在一些存储库中,数据层没有使用async/await。我相信这可能会导致性能问题,因为我相信它被遗漏了。
public Task<List<Role>> GetRolesByClaimValue(Guid tenantId, string claimType, CancellationToken cancellationToken = default)
{
return _dbContext.GLSRoleClaims
.Include(t => t.Role)
.Where(t => (t.TenantId == null || t.TenantId == tenantId) && t.ClaimType == claimType)
.Select(t => t.Role!)
.ToListAsync(cancellationToken);
}
另一个仓库:
public Task<bool> IsInvited(Guid tenantId, Guid userId, CancellationToken cancellationToken = default) => _dbContext.TenantInvitations.AnyAsync(t => t.UserId == userId && t.TenantId == tenantId, cancellationToken: cancellationToken);
不添加可以吗?当我在互联网上搜索并阅读“异步省略”或“异步传递”时,它有时在性能方面很有用。
我很困惑何时使用它,何时不使用它。
我想知道什么时候我们不应该使用 async/await
await
调用async
函数只是意味着您不希望调用函数继续其工作,直到等待的函数返回为止。当您想要使用异步函数的结果或想要在继续之前报告成功时,您可以这样做。这种行为在数据获取代码中是典型的。但是,在某些情况下您并不关心异步函数的作用。例如,您可能有一个定期触发的 main 函数
发送电子邮件的异步函数。在这种情况下,调用函数不再关心异步函数。电子邮件发送功能可能有自己的报告失败的方法,例如登录文件或数据库。
简而言之,并非所有
async
功能都必须被 await
编辑。无论如何,决定是否等待与性能没有太大关系。