单线程 Javascript 和 AJAX 处理
Single thread Javascript and AJAX handling
Javascript被认为是单线程的。AJAX也被认为是异步的。
考虑一个场景;
我有一个按钮,单击它后,我进行 AJAX 调用,这需要 5-6 秒。现在,UI 不会被阻止,用户会执行其他一些操作(例如单击另一个按钮,该按钮正在执行某些代码,同时返回 AJAX 响应)。现在在这种情况下,由于正在执行其他代码,何时执行 AJAX 回调?它是否必须等待还是可以在并行线程中执行?
事件已排队,因此当 Ajax 调用完成时,该事件的处理程序将排队以在事件循环上运行。当单个线程完成按钮处理程序后,它将处理队列中的下一个事件。所以 - 你必须等待按钮单击启动的代码完成,除非 Ajax 请求在用户单击按钮之前完成,在这种情况下,按钮单击处理程序必须等待。 你能做的最好的事情就是拆分你的算法,让它以离散的块运行,这些块可以使用 setTimeout 放到队列中,但这非常棘手。
所以我对
这个话题进行了一些搜索。与我想象的相反,javascript与多线程完全不同。相反,它有一个执行的操作队列。
直接答案是:根据非常确切的时间,AJAX 回调可能必须等待点击事件完成。它还可能必须等待在"同一时刻"执行的任何其他代码。
这解释了while(true)
或alert()
停止站点上每个脚本之类的操作。
相关文章:
- 如何处理Ajax.BeginForm()OnError OnFailure回调
- Masony无法处理ajax响应
- 如何在phonegap应用程序中处理Ajax json响应
- 在嵌套循环中处理 AJAX (Angularjs)
- 运行 AJAX 需要什么 - 将 jQuery 添加到页面处理 AJAX 调用
- 在 Rails 中处理 ajax 请求
- 为什么不允许在jquery数据表服务器端处理ajax中使用成功
- JQuery无法处理ajax返回的内容
- 处理AJAX回调
- 难以处理ajax调用
- 额外的层可以更好地处理ajax调用
- 如何在响应时处理ajax错误
- DROPZONE - 在 fle 上传期间处理 AJAX 请求中的会话超时
- 在快递中.js有没有办法同时处理 ajax 表单提交和浏览器帖子提交
- 动态处理 ajax 结果
- 如何在没有jQuery的情况下处理Ajax浏览器兼容性
- CakePHP - 处理 ajax 调用中的 url
- 当服务器没有响应时如何处理 ajax 调用
- 全局和特定错误处理 AJAX jQuery
- 处理 AJAX 调用的 Web 工作人员 - 优化矫枉过正