首页 新闻 会员 周边

MVC的Action中的await xxAsync异步写法

0
悬赏园豆:5 [已解决问题] 解决于 2017-05-23 17:18
 请教大神们,
await xxAsync ; 这个写法 和直接同步执行 xxSync方法有啥区别呢?
前者等待异步方法执行完, 后者直接调用 同步方法。 
感觉一样啊 ,都是等待 本行代码执行完毕,再去执行下一行代码。
比如:
 // POST: /Account/ResetPassword
        [HttpPost]
        [AllowAnonymous]
        [ValidateAntiForgeryToken]
        public async Task<ActionResult> ResetPassword(ResetPasswordViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return View(model);
            }
            var user = await UserManager.FindByNameAsync(model.Email);
            if (user == null)
            {
                // Don't reveal that the user does not exist
                return RedirectToAction("ResetPasswordConfirmation", "Account");
            }
            var result = await UserManager.ResetPasswordAsync(user.Id, model.Code, model.Password);
            if (result.Succeeded)
            {
                return RedirectToAction("ResetPasswordConfirmation", "Account");
            }
            AddErrors(result);
            return View();
        }

 var result = await UserManager.ResetPasswordAsync(user.Id, model.Code, model.Password);

这合起来不就是同步执行么。和

 var result =   UserManager.ResetPassword(user.Id, model.Code, model.Password);

啥区别

王庆东mas的主页 王庆东mas | 初学一级 | 园豆:4
提问于:2017-05-23 15:05
< >
分享
最佳答案
1

区别在于UserManager.ResetPasswordAsync(user.Id, model.Code, model.Password);可以不加await

而后面那个必须等待.

收获园豆:5
吴瑞祥 | 高人七级 |园豆:29449 | 2017-05-23 15:09

var result = await UserManager.ResetPasswordAsync(user.Id, model.Code, model.Password);

这合起来不就是同步执行么。和

 var result =   UserManager.ResetPassword(user.Id, model.Code, model.Password); 一样效果。对吗?

王庆东mas | 园豆:4 (初学一级) | 2017-05-23 15:10

@王庆东mas: 是的.你等待了.就和同步方法的效果是一样的.

吴瑞祥 | 园豆:29449 (高人七级) | 2017-05-23 17:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册