在哪个线程上处理和执行AJAX请求等异步请求
On which thread are asynchronous requests like AJAX request occur processed and executed
由于浏览器中的Javascript引擎只有1个线程,当我们使用jquery创建XHR请求时,像这样
$.ajax({
url: "http://test.com/test.html",
context: document.body
}).done(function() {
$( this ).addClass( "done" );
});
对远程服务器的HTTP请求发生在哪个线程上,哪个线程通知主线程请求完成?
你必须记住javascript是在浏览器中运行的——浏览器本身使用多个线程和多个进程(特别是在Chrome中)
当您创建一个XHR请求(这是一个抽象)时,浏览器将在其权限级别内打开一个本地TCP端口,并可能在自己的线程上运行此任务。
这就是为什么JS对IO工作得这么好——你可以考虑让浏览器打开一个本地tcp端口,然后与远程web服务器通信,就像用node.js连接和读取数据库一样。
浏览器可以打开多个tcp连接,它们可以在底层共享,但是,当响应返回时,它只能在JS事件循环中一次处理来自这些XHR请求(与浏览器对话的抽象)之一的响应。
虽然,worker (clustering和node中的child.fork())等在现代JS中也是可用的
首先,当浏览器加载JavaScript文件时,然后将$。Ajax将被执行。有两种不同的XHR方式。首先设置async:false
,然后后一个脚本将在XHR之后执行。否则如果我们设置async:true
。然后发送XHR,但将在服务器响应到达时进行处理。
相关文章:
- ajax请求的顺序总是不同的
- 从ajax请求中获取javascript对象
- Ajax请求文档就绪会导致jquery加载缓慢
- MockJax没有在JavaScript应用程序中发送对我AJAX请求的响应
- 正在传递JSONP标头's数据参数到另一个文件中的AJAX请求
- JavaScript代码未正确检查ajax请求
- node.js请求数据事件未在CORS ajax调用中触发
- jQuery Ajax GET请求工作不正常
- "日期“;AJAX请求返回的类型值未定义
- Django - 响应请求 AJAX
- 使用 jQuery 的 CORS 请求 - $.ajax()
- 如果无线电值为 ==1,则请求 ajax
- 如何处理对循环中发出的多个异步请求(AJAX 调用)的响应
- POST请求ajax jquery错误
- CasperJS don'我没有请求AJAX
- 使用这种Facebook风格的Lightbox-请求AJAX-在一个页面上覆盖多个按钮
- 400错误请求ajax post请求
- 如何在开始发送请求ajax之前延迟3秒
- 与jQuery同时请求AJAX
- 使用POST请求AJAX发送json对象