2013-12-12 496 views
0

我正在學習網絡工作者,發現我們現在可以在網頁上運行多個腳本。這很有趣,但是我的想法又一次出現了:如果我們無法在HTML網絡工作者之前運行多個腳本,我如何在單個HTML頁面上運行多個幻燈片而不使用上述技術。 我可能沒有正確理解這個概念。任何人都可以解釋我是如何運行幾個幻燈片,這是從沒有網絡工作者的JavaScript設計的?多個腳本如何在沒有webworkers的情況下運行?

+0

WebWorkers允許您在線程中運行多個腳本,而不是簡單地「運行多個腳本」 - 這可能沒有WebWorkers。 – Ginden

+0

下面是對JavaScript併發模型的解釋 - 谷歌爲「JavaScript事件循環」之類的東西尋找無窮的資源:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/EventLoop以及jQuery的創建者如何定時器的工作(這是關於JS事件隊列的):http://ejohn.org/blog/how-javascript-timers-work/這個看起來不錯:http:// blog.carbonfive.com/2013/10/27/the-javascript-event-loop-explained/ –

回答

1

幻燈片將通常使用setTimeout()來顯示下一張幻燈片。您可以簡單地使用各自的setTimeout()進行多個幻燈片演示。

第一張幻燈片顯示了它的初始圖像,然後在將來想要切換到下一張幻燈片的某個特定時間設置setTimeout()。第二個幻燈片會顯示它的初始圖像,並在將來想要切換到下一張幻燈片的特定時間設置setTimeout()

然後,兩個幻燈片顯示都會執行,直到其中一個setTimeout()發生火災。他們從未在技術上「同時執行」。實際上一次只有一個代碼正在運行。使用足夠短的定時器時間間隔,可能看起來它們都在同一時間運行,但在技術上它們不是。

沒有WebWorkers的Javascript是單線程的。一次只能運行一個執行線程。定時器通常用於模擬同時發生的多個事件(例如同時運行多個基於JavaScript的動畫)。但是,這只是一個模擬(有時非常有效)。

幻燈片還可以使用CSS3動畫或轉換來顯示從一張幻燈片到另一張幻燈片的由瀏覽器控制的轉換,並且不使用javascript來執行動畫(它們使用的本機代碼可能是或可能不是多個或者甚至可以使用GPU--這是瀏覽器實現的依賴)。

您可能會發現該答案及其中的參考資料有助於理解javascript事件模型和單線程:How does JavaScript handle AJAX responses in the background?

相關問題