我们需要在控制器中使用 async/await 关键字吗?

法哈德·扎马尼

我有一个这样的用户控制器:

public class UserController : ControllerBase
{
    private readonly IUserService _userService;

    public UserController(IUserService userService)
    {
        _userService = userService;
    }
    public async Task<User> Get(int id, CancellationToken cancellationToken)
    {
        return await _userService.GetUserById(id, cancellationToken);
    }
}

和用户服务:

public class UserService : IUserService
{
    public async Task<User> GetUserById(int id, CancellationToken cancellationToken)
    {
        return await _dbContext.Users.Where(a => a.Id == id).FirstOrDefaultAsync(cancellationToken);
    }
}

UserService我有一个async方法,通过Id.

我的问题是,我们需要使用async/await关键字 incontroller还是使用async/awaitinUserService就足够了?

public class UserController : ControllerBase
{
    private readonly IUserService _userService;

    public UserController(IUserService userService)
    {
        _userService = userService;
    }
    public Task<User> Get(int id, CancellationToken cancellationToken)
    {
        return _userService.GetUserById(id, cancellationToken);
    }
}
马克·格拉维尔

如果您只等待一件事,作为方法的最后一行async,并且直接返回结果或根本不返回结果(即不对结果做任何重要的事情),那么是的,您可以await通过删除asyncawait部分; 这避免了一些机制,但这意味着如果您同步调用故障的方法(特别是:它抛出异常而不是返回报告故障状态的任务),那么异常将略微不同。

如果您处于内部循环中,例如在每次操作被多次调用的 IO 代码中间,并且您需要对其进行优化,那么避免此状态机可能很重要,但是:这在这里不适用 - 您是在控制器的顶部。老实说,它不需要优化:只需使用async/ await:它会更一致地正确。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我们是否需要在.net 4.0或4.5中使用此关键字

来自分类Dev

属性需要强关键字吗?

来自分类Dev

我们可以在UDF中使用关键字参数吗

来自分类Dev

为什么我们需要在Angular中使用“ $ event”关键字进行事件绑定?(用于输出)

来自分类Dev

我需要volatile关键字吗?(Java)

来自分类Dev

我需要uintXX_t的'unsigned'关键字吗?

来自分类Dev

def关键字在Groovy中使用更多空间吗?

来自分类Dev

我们可以使用Java关键字来命名类吗?

来自分类Dev

我在代码中正确使用了'this'关键字吗?

来自分类Dev

我在课堂上正确使用了this关键字吗?

来自分类Dev

我可以重载throw关键字吗?

来自分类Dev

我可以在R中重命名关键字吗?

来自分类Dev

分词器应该返回语言关键字吗?

来自分类Dev

建议使用meta关键字(2017)吗?

来自分类Dev

可以在特征上使用'new'关键字吗?

来自分类Dev

关键字`this`可以在类范围内使用吗?

来自分类Dev

这是对“ this”关键字的不明智使用吗?

来自分类Dev

我们可以在控制器内部的ng-init中使用变量吗?

来自分类Dev

我们可以在cpp中重命名cout,endl关键字吗?

来自分类Dev

我可以在Python包装函数中仅传递关键字参数的关键字名称吗?

来自分类Dev

为什么我们使用volatile关键字?

来自分类Dev

我们可以使用constant和returns关键字和a;改变solidity中变量的状态吗?

来自分类Dev

如何使用Robot框架导入PostgreSql DB Dump?我们有任何现有的关键字吗?

来自分类Dev

使用或过滤关键字

来自分类Java

私人关键字的使用

来自分类Dev

@final 关键字的使用

来自分类Dev

JavaScript 使用 (this) 关键字

来自分类Dev

使用“覆盖”关键字

来自分类Dev

我可以在AngularDart中使用类型检查(is关键字)进行ngIf吗?

Related 相关文章

  1. 1

    我们是否需要在.net 4.0或4.5中使用此关键字

  2. 2

    属性需要强关键字吗?

  3. 3

    我们可以在UDF中使用关键字参数吗

  4. 4

    为什么我们需要在Angular中使用“ $ event”关键字进行事件绑定?(用于输出)

  5. 5

    我需要volatile关键字吗?(Java)

  6. 6

    我需要uintXX_t的'unsigned'关键字吗?

  7. 7

    def关键字在Groovy中使用更多空间吗?

  8. 8

    我们可以使用Java关键字来命名类吗?

  9. 9

    我在代码中正确使用了'this'关键字吗?

  10. 10

    我在课堂上正确使用了this关键字吗?

  11. 11

    我可以重载throw关键字吗?

  12. 12

    我可以在R中重命名关键字吗?

  13. 13

    分词器应该返回语言关键字吗?

  14. 14

    建议使用meta关键字(2017)吗?

  15. 15

    可以在特征上使用'new'关键字吗?

  16. 16

    关键字`this`可以在类范围内使用吗?

  17. 17

    这是对“ this”关键字的不明智使用吗?

  18. 18

    我们可以在控制器内部的ng-init中使用变量吗?

  19. 19

    我们可以在cpp中重命名cout,endl关键字吗?

  20. 20

    我可以在Python包装函数中仅传递关键字参数的关键字名称吗?

  21. 21

    为什么我们使用volatile关键字?

  22. 22

    我们可以使用constant和returns关键字和a;改变solidity中变量的状态吗?

  23. 23

    如何使用Robot框架导入PostgreSql DB Dump?我们有任何现有的关键字吗?

  24. 24

    使用或过滤关键字

  25. 25

    私人关键字的使用

  26. 26

    @final 关键字的使用

  27. 27

    JavaScript 使用 (this) 关键字

  28. 28

    使用“覆盖”关键字

  29. 29

    我可以在AngularDart中使用类型检查(is关键字)进行ngIf吗?

热门标签

归档