繁体   English   中英

如何使用Async和Await Keyword进行递归异步?

[英]How can i make Recursion Asynchronous using Async and Await Keyword?

我从数据库获得多级动态菜单。 目前我已成功调用它,但我想让它异步。
这是我的代码;

protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
    var menus = Uow.Menus.GetAll()
        .Select(m => new ParentMenuViewModel()
        {
            MenuId = m.MenuId,
            Name = m.Name,
            ParentId = m.ParentId
        })
        .ToList<ParentMenuViewModel>();
    ViewBag.Menus = CreateVM(0, menus);
    base.OnActionExecuting(filterContext);
}

public IEnumerable<ParentMenuViewModel> CreateVM(int parentid, List<ParentMenuViewModel> list)
{
    return list.Where(m=> m.ParentId==parentid)
        .Select(m=> new ParentMenuViewModel()
        {
            MenuId = m.MenuId,
            Name = m.Name,
            ParentId = m.ParentId,
            ChildMenus = CreateVM(m.MenuId, list)
        });
}

那么, 我如何使用async和await关键字进行异步?
请注意,它会循环,直到子项完全加载为止;
使它成为异步(上面的代码)是一个好习惯吗?

不幸的是, async操作过滤器尚不可用(尚未); 看到这个问题 您可以在此投票给MVC团队以添加此功能。

一旦MVC支持async操作过滤器,您就可以使用例如GetAllAsync 递归部分不需要任何async功能,因为它不受I / O限制。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM