我需要知道Javascript事件是否优先于正常的代码执行。我的意思是会中断代码执行吗?我希望用户从下拉列表中选择一些值,然后在选择之后对其执行一些处理,然后将其发布到服务器。 但是如果用户在经过特定时间后没有选择值,我会从下拉列表中选择一些值(基于预定义的规则),然后处理后将其发布到服务器。现在我担心如果我手动从中选择一些值下拉列表,在处理过程中,用户也可以从浏览器中选择一些值,并将数据两次发布到服务器。 虽然javascript是单线程但我已经读过一些事件会中断正常的代码执行。如果这是真的,我该如何解决这个问题。
答案 0 :(得分:2)
浏览器事件不会中断JavaScript代码的执行。 JavaScript实际上是单线程的,并且具有用于执行代码的先进先出(FIFO)message queue。关于先发制人:
在完成任何其他消息之前,将完全处理每条消息 处理。这在推理你的时候提供了一些不错的属性 程序,包括每当一个函数运行时,它不能 被抢占并将在任何其他代码运行之前完全运行(和 可以修改函数操作的数据。)
同样,setTimeout
和setInterval
也不能中断代码执行:
调用setTimeout将在时间之后向队列添加消息 作为第二个参数传递。如果没有其他消息 队列,消息立即处理;但是,如果有的话 消息,setTimeout消息将不得不等待其他消息 待处理。因此,第二个参数表示a 最短时间而非保证时间。
答案 1 :(得分:0)
浏览器事件是否会中断JavaScript代码执行?
不,他们没有。没有事件。
没有任何中断JavaScript代码执行。 JavaScript引擎不会做“先发制人的多任务处理”。