JavaScript是单线程的吗?如果没有,我如何获得对共享数据的同步访问?

我有一个带有DIV的网页,带有鼠标悬停处理程序,用于显示弹出信息气泡.我不希望一次看到多个信息泡泡.但是当用户将鼠标快速移动到两个项目上时,我有时会得到两个气泡.这不应该发生,因为显示弹出窗口的代码会取消之前的弹出窗口.

如果这是一个多线程系统,那么问题就很明显了:有两个线程试图显示一个弹出窗口,它们都会取消现有的弹出窗口,然后弹出自己的弹出窗口.但我认为JavaScript总是运行单线程,这会阻止这一点.我错了吗?事件处理程序是异步运行的,在这种情况下我需要同步访问共享数据,还是应该在库代码中查找用于取消弹出窗口的错误

编辑添加

>有问题的库是SIMILE Timeline及其Ajax库;
>事件处理程序调用SimileAjax.DOM.cancelEvent(domEvt),我假设根据名称取消事件的冒泡;
>只是为了让事情变得更复杂,我实际上正在做的是开始超时,如果没有被moustout取消显示弹出窗口,这是为了防止弹出窗口烦人地闪烁但令人烦恼地产生相反的效果.

我还有另一个戳,看看我是否可以解决我出错的地方.

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...