【问题标题】:How async await work in a web application异步等待如何在 Web 应用程序中工作
【发布时间】:2016-01-30 19:30:30
【问题描述】:
这可能是一个基本问题。我们如何在 MVC 应用程序中使用异步等待 Web api 调用?假设我在我的 mvc ajax 表单中使用提交按钮,并且在控制器中我有一个异步 Web api 调用,在这种情况下,我是否必须等待异步操作完成才能返回 ActionResult?
我希望我需要等到任务完成,因为我在客户端的 ajax 脚本需要结果。
请说明您在类似情况下的见解和经验
【问题讨论】:
标签:
jquery
asp.net
ajax
async-await
【解决方案1】:
要真正实现异步,您需要在将响应发送回客户端之前等待响应。您的控制器可能类似于:
public async Task<IHttpActionResult> Read()
{
var data = await _asyncMethod();
return Ok(data);
}
所以在await 完成之前,响应不会立即返回给客户端。仅使用async/await 关键字不会创建新线程,而是告诉当前线程响应可能不会立即可用,因此不要阻塞等待它的线程。对于一个非常繁忙的控制器,这可以提高响应能力,因此控制器可以在不真正完成第一个请求的情况下响应其他请求,并且当等待的异步方法完成时,它会将响应发送回客户端。