欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長(zhǎng)資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

          javascript引擎是單線程嗎

          JavaScript引擎是單線程的;JavaScript的主要用途是與用戶互動(dòng)以及操作DOM,為例避免復(fù)雜的同步問(wèn)題,使其同一時(shí)間只能做一件事情,所以JavaScript是單線程的。

          javascript引擎是單線程嗎

          本教程操作環(huán)境:windows10系統(tǒng)、javascript1.8.5版、Dell G3電腦。

          javascript引擎是單線程嗎

          JavaScript引擎是單線程的。

          JS為什么是單線程的? 為什么需要異步? 單線程又是如何實(shí)現(xiàn)異步的呢?

          技術(shù)的出現(xiàn),都跟現(xiàn)實(shí)世界里的應(yīng)用場(chǎng)景密切相關(guān)的。

          同樣的,我們就結(jié)合現(xiàn)實(shí)場(chǎng)景,來(lái)回答問(wèn)題

          (1) JS為什么是單線程的?

          單線程:同一個(gè)時(shí)間只能做一件事

          JavaScript的單線程,與他的用途有關(guān)。作為瀏覽器腳本語(yǔ)言,JavaScript的主要用途是與用戶互動(dòng),以及操作DOM。這就決定了他只能是單線程,否則會(huì)帶來(lái)很復(fù)雜的同步問(wèn)題。比如,假定JavaScript同時(shí)有兩個(gè)線程,一個(gè)線程在某個(gè)DOM節(jié)點(diǎn)上添加內(nèi)容,另一個(gè)線程刪除了這個(gè)節(jié)點(diǎn),這時(shí)瀏覽器應(yīng)該以哪個(gè)線程為準(zhǔn)?

          為了利用多核CPU的計(jì)算能力,HTML5提出Web Worker 標(biāo)準(zhǔn),允許JavaScript腳本創(chuàng)建多個(gè)線程,但是子線程完全受主線程控制,且不得操作DOM。所以,這個(gè)新標(biāo)準(zhǔn)并沒(méi)有改變JavaScript單線程的本質(zhì)。

          JS最初被設(shè)計(jì)用在瀏覽器中,那么想象一下,如果瀏覽器中的JS是多線程的。

          場(chǎng)景描述:

          那么現(xiàn)在有2個(gè)進(jìn)程,process1 process2,由于是多進(jìn)程的JS,所以他們對(duì)同一個(gè)dom,同時(shí)進(jìn)行操作

          process1 刪除了該dom,而process2 編輯了該dom,同時(shí)下達(dá)2個(gè)矛盾的命令,瀏覽器究竟該如何執(zhí)行呢?

          這樣想,JS為什么被設(shè)計(jì)成單線程應(yīng)該就容易理解了吧。

          (2) JS為什么需要異步?

          場(chǎng)景描述:

          如果JS中不存在異步,只能自上而下執(zhí)行,如果上一行解析時(shí)間很長(zhǎng),那么下面的代碼就會(huì)被阻塞。

          對(duì)于用戶而言,阻塞就意味著"卡死",這樣就導(dǎo)致了很差的用戶體驗(yàn)

          所以,JS中存在異步執(zhí)行。

          贊(0)
          分享到: 更多 (0)
          網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)