第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

js的異步循環(huán)隊列問題?

js的異步循環(huán)隊列問題?

繁華開滿天機 2018-12-20 14:23:38
js中異步執(zhí)行的運行機制是只有主線程空了,才會去讀取"任務(wù)隊列",那么什么時候才是主線程空了啊,是指當(dāng)前script標(biāo)簽里面的代碼都執(zhí)行完嗎,還是怎么樣?<script>    var n = 0;    setTimeout(function () {        alert(++n);    }, 0);    for (var i = 0; i <= 1000000; i++) {    }</script><script>    alert("a");</script><script>    alert("b");</script>
查看完整描述

1 回答

?
慕絲7291255

TA貢獻(xiàn)1859條經(jīng)驗 獲得超6個贊

<script>

  var n = 0;

  setTimeout(function () {

      console.log(++n);

  }, 0);

  var begin = new Date().getTime()

  while(new Date().getTime() - begin < 2000) {

    

  }

</script>

<script>

    console.log("a");

</script>

<script>

    console.log("b");

</script>

用這個來測試。使用alert因為會發(fā)生阻塞,所以會發(fā)生想不到的事情。 
然后script會有一個解析的過程。你使用alert時,后面的script還沒有被解析進(jìn)主線程,而setTimeout雖然是0的延遲,但是還是有個最小值的。alert阻塞了后面的解析,此時延時器時間到了,而主線程是空的(沒有被解析進(jìn)主線程)所以會先彈1。

查看完整回答
反對 回復(fù) 2019-01-10
  • 1 回答
  • 0 關(guān)注
  • 624 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號