Jquery 调用异步控制器方法并等待结果
我有一个控制器方法,它可以执行长时间的操作,并且几乎是这样编码的Jquery 调用异步控制器方法并等待结果,jquery,asp.net-mvc,asynchronous,async-await,Jquery,Asp.net Mvc,Asynchronous,Async Await,我有一个控制器方法,它可以执行长时间的操作,并且几乎是这样编码的 [HttpPost] [ValidateAntiForgeryToken] public async Task<ActionResult> MyLongMethodAsync( MyViewModel model ) { if ( ModelState.IsValid ) { try { await _service.DoLongTaskAsync( model );
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> MyLongMethodAsync( MyViewModel model ) {
if ( ModelState.IsValid ) {
try {
await _service.DoLongTaskAsync( model );
return RedirectToAction( "LongTaskResult", new { id = model.TaskID } );
}
catch ( Exception e ) {
HandleErrorViewModel he = new HandleErrorViewModel( e.Message );
return View( "HandleError", he );
}
}
}
[HttpPost]
[ValidateAntiForgeryToken]
公共异步任务MyLongMethodAsync(MyViewModel模型){
if(ModelState.IsValid){
试一试{
wait_service.DoLongTaskAsync(模型);
返回RedirectToAction(“LongTaskResult”,new{id=model.TaskID});
}
捕获(例外e){
HandleErrorViewModel he=新的HandleErrorViewModel(如消息);
返回视图(“HandleError”,he);
}
}
}
我在razor视图中从jQuery调用此方法
在上一阶段中,我注意到该方法将执行时间增加到5分钟以上,并且希望更改该方法的行为以支持不同的用法。
具体来说,我希望立即向UI返回任务已启动的通知,然后让UI侦听任务已完成事件。我希望避免使用UI来轮询结果。有没有其他方法来处理这种情况?服务器端的
异步等待
的目的是不浪费可以为其他请求服务的线程,而不是同步等待
这不会改变客户端和服务器之间的交互。为此,您需要另一种解决方案。我认为这是当今首选的解决方案,因为它内置了对客户端(JS)和服务器(ASP.Net)的支持但也有其他选项,例如XSockets。服务器端的
异步等待
服务于它的目的,即不浪费可能服务于其他请求而不是同步等待的线程
这不会改变客户端和服务器之间的交互。为此,您需要另一种解决方案。我认为这是当今首选的解决方案,因为它内置了对客户端(JS)和服务器(ASP.Net)的支持但也有其他选项,例如XSockets。服务器端的
异步等待
服务于它的目的,即不浪费可能服务于其他请求而不是同步等待的线程
这不会改变客户端和服务器之间的交互。为此,您需要另一种解决方案。我认为这是当今首选的解决方案,因为它内置了对客户端(JS)和服务器(ASP.Net)的支持但也有其他选项,例如XSockets。服务器端的
异步等待
服务于它的目的,即不浪费可能服务于其他请求而不是同步等待的线程
这不会改变客户端和服务器之间的交互。为此,您需要另一种解决方案。我认为这是目前首选的解决方案,因为它内置了对客户端(JS)和服务器(ASP.Net)的支持,但也有其他选项,例如XSockets。可能感谢您的建议。直到那时才知道信号员的事now@Lorenzo当然随时可以。谢谢你的建议。直到那时才知道信号员的事now@Lorenzo当然随时可以。谢谢你的建议。直到那时才知道信号员的事now@Lorenzo当然随时可以。谢谢你的建议。直到那时才知道信号员的事now@Lorenzo当然随时都可以。