2015-10-30 21 views
1

这可能是一个基本问题。我们如何在MVC应用程序中使用异步等待Web API调用?假设我在我的mvc ajax表单中使用了一个提交按钮,并且在控制器中我使用了异步web api调用,在这种情况下,在返回ActionResult之前是否必须等待异步操作完成?async如何等待Web应用程序中的工作

我希望我需要等到任务完成,因为我的ajax脚本在客户端需要一个结果。

请解释在类似情况下你的洞察力和经验

回答

0

要真正异步则需要等待发送回客户端之前的响应。你的控制器看起来像:

public async Task<IHttpActionResult> Read() 
{ 
    var data = await _asyncMethod(); 
    return Ok(data); 
} 

所以直到await已完成的响应不会去立即返回给客户端。仅使用async/await关键字不会创建新线程,而是会通知当前线程响应可能不会立即可用,因此请勿阻塞等待它的线程。对于非常繁忙的控制器,这可以提高响应能力,以便控制器可以响应其他请求而不真正完成第一个请求,并且当等待的异步方法完成时,它会将响应发送回客户端。

相关问题