日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

JS定时器和单线程异步特性

發布時間:2025/5/22 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JS定时器和单线程异步特性 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先要說的是,定時器相關的方法都是屬于BOM方法,而定時器呢,它是用于在設定的時
間執行一段代碼,或者在給定的時間間隔內重復該代碼。具體函數:

setTimeout(callback, delay);//delay一定的時間后,執行回調函數只執行一次 setInterval(callback, delay);//每隔一段時間執行一次callback,反復執行 clearInterval(timer);//清除定時器

定時器確實很好用,但是卻又不好用,為什么這么說呢?
我們知道JS是單線程的,既然是單線程那么就很容易出現線程被堵塞的情況,怎么解決
呢?——異步!
當然JS是單線程的它本身是不能異步的,但JS的宿主環境(比如瀏覽器,node)是多線程
的,宿主環境通過某種方式(比如:node的事件驅動)使得JS具備了異步的特性。
為什么突然談起JS的單線程異步呢?因為定時器事件會被JS異步處理,什么意思?
用代碼來說:

1 var num = 1; 2 setTimeout(function() { 3 num++; 4 console.log(num); 5 }, 1000); 6 console.log(num); //結果并是不(2,1)而是(1,2)

為什么會這樣?前面說過了,JS會把定時器事件異步處理,也就是說它并不會等待定時器事件

處理完成后再執行下面的代碼,而是直接將定時器事件插入到事件隊列當中后,直接執行下面

的代碼,當定時器事件執行完成后JS再反過頭來執行定時器事件的回調部分代碼,這就是異步!

異步可以有效的防止JS線程被堵塞,且會有很高的效率,能夠使JS在有限的資源下做更多的事

情,這一點是很了不起的。(node中我們會大量接觸關于異步的問題)

轉載于:https://www.cnblogs.com/luoge-Snippet/p/9271985.html

總結

以上是生活随笔為你收集整理的JS定时器和单线程异步特性的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。