我正在学习网络工作者,发现我们现在可以在网页上运行多个脚本。这很有意思,但有一件事再次出现在我脑海中的是如果我们不能在html网络工作者之前运行多个脚本,我如何在不使用上述技术的情况下在单个html页面上运行多个幻灯片。 我可能没有正确理解这个概念。任何人都可以解释我是如何运行几个仅使用JavaScript设计而没有网络工作者的幻灯片吗?
答案 0 :(得分:1)
幻灯片通常会使用setTimeout()
来显示下一张幻灯片。您可以使用自己的setTimeout()
轻松拥有多个幻灯片。
第一张幻灯片显示了它的初始图像,然后在想要切换到下一张幻灯片时,在将来的特定时间设置setTimeout()
。然后第二张幻灯片显示它的初始图像,并在将来要切换到下一张幻灯片时设置setTimeout()
特定时间。
然后,两个幻灯片现在都在执行,直到他们发生setTimeout()
次火灾。他们从不在技术上“同时执行”。实际上只有一个实际上有代码运行。使用足够短的计时器间隔,可能看起来它们同时运行,但从技术上讲它们不是。
没有WebWorkers的Javascript是单线程的。一次只运行一个执行线程。定时器通常用于模拟同时发生的多个事情(例如同时运行的多个基于javascript的动画)。但是,这只是模拟(有时是非常有效的模拟)。
幻灯片也可以使用CSS3动画或过渡来显示从一张幻灯片到下一张幻灯片的幻灯片转换,这些过渡由浏览器控制,不使用javascript来执行动画(它们使用的本机代码可能是也可能不是多个线程或甚至可以使用GPU - 这取决于浏览器实现。)
您可能会发现此答案及其中包含的参考资料有助于理解javascript事件模型和单线程:How does JavaScript handle AJAX responses in the background?。