当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《JavaScript是单线程的吗?如果没有,我如何获得对共享数据的同步访问?》经验,为你挑选了1个好方法。

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

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

编辑添加:

有问题的库是SIMILE Timeline及其Ajax库;

事件处理程序会调用SimileAjax.DOM.cancelEvent(domEvt),我假设根据名称取消事件的冒泡;

只是为了让事情变得更复杂,我实际上正在做的是开始超时,如果没有通过moustout显示弹出窗口取消,这是为了防止弹出窗口烦人地闪烁但是烦人地产生相反的效果.

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



1> pkaeding..:

是的,Javascript是单线程的.即使使用谷歌浏览器等浏览器,每个标签也有一个主题.

如果不知道如何从另一个弹出窗口取消弹出窗口,很难说出问题的原因是什么.

如果您的DIV彼此嵌套,则可能会出现事件传播问题.

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有