日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

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

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

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

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

定時器確實很好用,但是卻又不好用,為什么這么說呢?
我們知道JS是單線程的,既然是單線程那么就很容易出現(xiàn)線程被堵塞的情況,怎么解決
呢?——異步!
當然JS是單線程的它本身是不能異步的,但JS的宿主環(huán)境(比如瀏覽器,node)是多線程
的,宿主環(huán)境通過某種方式(比如: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會把定時器事件異步處理,也就是說它并不會等待定時器事件

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

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

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

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

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

總結

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

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