首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单线程Javascript和AJAX处理

单线程Javascript和AJAX处理
EN

Stack Overflow用户
提问于 2015-01-13 21:38:53
回答 2查看 141关注 0票数 0

Javascript被认为是单线程的。另外,AJAX被认为是异步的。

考虑一个场景;

我有一个按钮,点击它,我进行了一个AJAX调用,这需要5-6秒。现在,UI将不会被阻塞,用户将执行其他操作(比如单击另一个按钮,该按钮现在正在执行一些代码,同时返回AJAX响应)。现在,在本例中,由于其他代码正在执行,AJAX回调将在何时执行?它是必须等待,还是可以在并行线程中执行?

EN

回答 2

Stack Overflow用户

发布于 2015-01-13 21:47:20

事件是排队的,所以当Ajax调用完成时,它的处理程序将排队等待在事件循环上运行。当单个线程处理完按钮处理程序后,它将处理队列中的下一个事件。因此,您必须等待按钮单击引发的代码完成,除非Ajax请求在用户单击按钮之前完成,在这种情况下,按钮单击处理程序必须等待。你能做的最好的就是拆分你的算法,这样它就可以在离散的块中运行,这些块可以使用setTimeout放到队列中,但这是相当棘手的。

票数 1
EN

Stack Overflow用户

发布于 2015-01-13 22:05:04

因此,我对这个主题进行了一些搜索。与我想象的相反,javascript一点也不像多线程。相反,它有一个它执行的操作队列。

直接的答案是:根据非常精确的时间,AJAX回调可能必须在事件完成之前等待。它可能还必须等待在“同一时刻”执行的任何其他代码。

这就解释了为什么像while(true)alert()这样的东西会停止站点上的所有脚本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27923487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档