情况如下。
我在extjs中有一个ajax请求调用。默认情况下,其async为true,这意味着ajax调用将是异步的。在服务器端,我还有一个返回类型为Task的方法,这意味着它也是异步的。 使Ajax调用和服务器端方法都异步之间会有什么区别?什么时候需要使控制器与任务异步?
Extjs ajax示例:
Ext.Ajax.request({
url: '/api/students',
method: 'GET',
timeout: 60000,
params:
{
id: 1 // loads student whose Id is 1
},
headers:
{
'Content-Type': 'application/json'
},
success: function (response) {
},
failure: function (response) {
Ext.Msg.alert('Status', 'Request Failed.');
}
});
控制器类示例:
public async Task<IActionResult> students()
{
return Ok()
}
答案 0 :(得分:1)
在客户端执行异步操作将使UI保持响应,因为JavaScript是单线程的,因此在调用服务器时不会阻止UI。
在服务器端,执行异步操作可使服务器处理更多请求,因为您的控制器调用了后端服务的异步操作,因此该服务器已被释放以同时处理另一个传入请求。
通常,服务器端控制器通过调用也依赖于异步的服务/存储库而变为异步。几年前,我看到了Scott Hanselman的一个演示,他在其中进行了比较,即在服务器代码中使用异步确实可以产生比非异步代码更好的性能。
希望这会有所帮助。