浏览器事件会中断JavaScript代码执行吗?

时间:2017-07-24 20:10:04

标签: javascript

我需要知道Javascript事件是否优先于正常的代码执行。我的意思是会中断代码执行吗?我希望用户从下拉列表中选择一些值,然后在选择之后对其执行一些处理,然后将其发布到服务器。 但是如果用户在经过特定时间后没有选择值,我会从下拉列表中选择一些值(基于预定义的规则),然后处理后将其发布到服务器。现在我担心如果我手动从中选择一些值下拉列表,在处理过程中,用户也可以从浏览器中选择一些值,并将数据两次发布到服务器。 虽然javascript是单线程但我已经读过一些事件会中断正常的代码执行。如果这是真的,我该如何解决这个问题。

2 个答案:

答案 0 :(得分:2)

浏览器事件不会中断JavaScript代码的执行。 JavaScript实际上是单线程的,并且具有用于执行代码的先进先出(FIFO)message queue。关于先发制人:

  

在完成任何其他消息之前,将完全处理每条消息   处理。这在推理你的时候提供了一些不错的属性   程序,包括每当一个函数运行时,它不能   被抢占并将在任何其他代码运行之前完全运行(和   可以修改函数操作的数据。)

同样,setTimeoutsetInterval也不能中断代码执行:

  

调用setTimeout将在时间之后向队列添加消息   作为第二个参数传递。如果没有其他消息   队列,消息立即处理;但是,如果有的话   消息,setTimeout消息将不得不等待其他消息   待处理。因此,第二个参数表示a   最短时间而非保证时间。

答案 1 :(得分:0)

  

浏览器事件是否会中断JavaScript代码执行?

不,他们没有。没有事件。

没有任何中断JavaScript代码执行。 JavaScript引擎不会做“先发制人的多任务处理”。

相关问题