JavaScript如何實現多執行緒?

千鋒IT教育發表於2022-12-29

我們都知道JS是一種單執行緒語言,即使是一些非同步的事件也是在JS的主執行緒上執行的。像setTimeout、ajax的非同步請求,或者是dom元素的一些事件,都是在JS主執行緒執行的,這些操作並沒有在瀏覽器中開闢新的執行緒去執行,而是當這些非同步操作被操作時或者是被觸發時才進入事件佇列,然後在JS主執行緒中開始執行。

首先說一下瀏覽器的執行緒,瀏覽器中主要的執行緒包括,UI渲染執行緒,JS主執行緒,GUI事件觸發執行緒,http請求執行緒。

JS作為指令碼語言,它的主要用途是與使用者互動,以及操作DOM。這決定了它只能是單執行緒,否則會帶來很複雜的同步問題。

但是單執行緒的語言,有一個很致命的確定。如果說一個指令碼語言在執行時,其中某一塊的功能在執行時耗費了大量的時間,那麼就會造成阻塞。這樣的專案,使用者體驗是非常差的,所以這種現象在專案的開發過程中是不允許存在的。

其實JS為我們提供了一個Worker的類,它的作用就是為了解決這種阻塞的現象。當我們使用這個類的時候,它就會向瀏覽器申請一個新的執行緒。這個執行緒就用來單獨執行一個js檔案。

var worker = new Worker(js檔案路徑);

那麼這個語句就會申請一個執行緒用來執行這個js檔案。這樣也就實現了js的多執行緒。

IT面試題

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70023145/viewspace-2930098/,如需轉載,請註明出處,否則將追究法律責任。

相關文章