亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

定時器:基礎(chǔ)認(rèn)知

Martin91 / 3679人閱讀

摘要:因為一次性定時器只執(zhí)行一次,所以確認(rèn)需要調(diào)用時,不需要去清除。總結(jié)使用定時器時優(yōu)先選用一次性定時器,鏈?zhǔn)秸{(diào)用來實現(xiàn)周期性定時器的效果。注意定時器的任務(wù)函數(shù)添加進(jìn)任務(wù)隊列和執(zhí)行順序。

定時器 定時器概念

是程序按指定的時間間隔(反復(fù))自動的執(zhí)行一項任務(wù)

定時器方法屬于window對象
如果在該方法中使用this,this的值在非嚴(yán)格模式下返回的是window對象,在嚴(yán)格模式下返回的是undefined。

分為一次性定時器和周期性定時器

一次性定時器

setTimeout(),接收兩個參數(shù):要執(zhí)行的代碼和以毫秒表示的時間,只在等待時間到達(dá)后執(zhí)行一次

第一個參數(shù)可以是一段包含JavaScript代碼的字符串(和使用eval()方法的字符串相同),也可以是一個函數(shù),建議使用函數(shù)作為參數(shù)

第二個參數(shù)表示等待時間,但需要特別注意的是,經(jīng)過該段時間后,代碼不一定執(zhí)行。(定時器執(zhí)行順序會導(dǎo)致一些問題)

setTimeout(function(){
    alert(‘hello world’);
},100);
//或者
setTimeout(“alert(‘hello world’)”,100);

清除一次性定時器:
setTimeout()方法每次被調(diào)用都會返回一個新的數(shù)值,連續(xù)不重復(fù),作為該方法的唯一標(biāo)識符,如果需要取消一次性定時器,可以在執(zhí)行前設(shè)置clearTimeout()。

var timeoutId=setTimeout(function(){alert(‘hello world’)},1000);
clearTimeout(timeoutId);//在未調(diào)用之前清除了定時器

只要在指定的時間之前設(shè)置clearTimeout()就可以讓一次性定時器不執(zhí)行。因為一次性定時器只執(zhí)行一次,所以確認(rèn)需要調(diào)用時,不需要去清除。

周期性定時器

setInterval(),接收的參數(shù)類型和一次性定時器相同,按照指定的時間間隔(第二個參數(shù))去重復(fù)執(zhí)行代碼,直到該定時器被取消或頁面被卸載。

清除周期性定時器

var i=0;
var timerID=setInterval(function(){
    console.log(i);
    i+=1;
    if (i>10){clearInterval(timerID)}
},100);

同一次性定時器相同,都會返回一個唯一標(biāo)識符,在該定時器未停止之前,這個唯一標(biāo)識符是不變的,下次被重新調(diào)用,會返回另一個不同的數(shù)值。在達(dá)到清除條件時,設(shè)置clearInterval(),因為周期性定時器會一直執(zhí)行下去,所以必須設(shè)置清除。

定時器與調(diào)用隊列

瀏覽器是多線程程序,可同時執(zhí)行多個任務(wù),但,JavaScript是一個單線程的解釋器,一個時刻只能執(zhí)行一項任務(wù)。
為了控制要執(zhí)行的代碼,就有一個JavaScript任務(wù)隊列,這些任務(wù)會按它們添加到隊列的順序執(zhí)行,定時器的任務(wù)函數(shù)會在前面代碼執(zhí)行完之后才執(zhí)行,所以會存在等待時間超過設(shè)定的時間的情況。

例子

for(var i=0;i<3;i++){
    setTimeout("console.log(i)",0);
}
    //3,3,3

在控制臺中輸入以上代碼,會輸出三個3,原因是當(dāng)瀏覽器讀到定時器時,只是把任務(wù)函數(shù)加入了回調(diào)隊列,但必須在主程序(for循環(huán))執(zhí)行完后才會執(zhí)行,而主程序執(zhí)行完后,i的值為3,然后調(diào)用已經(jīng)在任務(wù)隊列中等待的三個定時器任務(wù)函數(shù),則都輸出相同的3。

一次性定時器和周期性定時器的比較 一次性定時器模擬周期性定時器
var i=0
setTimeout(function(){
    if (i<10){                           //設(shè)置任務(wù)函數(shù)執(zhí)行條件
        console.log(i);
        i+=1;
        setTimeout(arguments.callee,100);//鏈?zhǔn)秸{(diào)用一次性定時器
    }
},100)

使用一次性定時器時,不必跟蹤定時器ID,因為每次執(zhí)行代碼后,如果不再設(shè)置另一次調(diào)用,定時器就會自動停止。

由于一次性定時器是在當(dāng)前任務(wù)函數(shù)執(zhí)行完之后,才開始執(zhí)行下一次定時器函數(shù),所以定時器中所設(shè)置的間隔時間是從當(dāng)前任務(wù)函數(shù)執(zhí)行完之后開始計算的,這一點和周期性定時器不同。

周期性定時器模擬一次性定時器
var timerID=setInterval(function(){
    alert("hello world");
    clearInterval(timerID);
},100);

必須設(shè)置定時器清除,否則周期性定時器會一直執(zhí)行下去。

周期性定時器中的時間間隔是指每隔某段時間就調(diào)用一次,而不管每次執(zhí)行任務(wù)函數(shù)花費多長時間,如果任務(wù)函數(shù)執(zhí)行時間超過了設(shè)定的時間間隔,就會發(fā)生錯誤。

總結(jié)

使用定時器時優(yōu)先選用一次性定時器,鏈?zhǔn)秸{(diào)用setTimeout來實現(xiàn)周期性定時器的效果。

注意定時器的任務(wù)函數(shù)添加進(jìn)任務(wù)隊列和執(zhí)行順序。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/79848.html

相關(guān)文章

  • websocket初步認(rèn)知

    摘要:什么是是一個持久化的協(xié)議,改協(xié)議定義了一個用以在和建立一個連接。是建立在的基礎(chǔ)上,復(fù)用了的握手環(huán)節(jié),握手成功后經(jīng)過協(xié)商在走協(xié)議格式的數(shù)據(jù)。 什么是websocket Websocket是一個持久化的協(xié)議,改協(xié)議定義了一個 API 用以在browser和server建立一個 socket 連接。WebSocket是建立在http的基礎(chǔ)上,復(fù)用了HTTP的握手環(huán)節(jié),握手成功后經(jīng)過協(xié)商在走W...

    lemon 評論0 收藏0
  • Easyswoole 源碼學(xué)習(xí)和個人解析 目錄

    摘要:易用穩(wěn)定,本次想通過對的學(xué)習(xí)和個人解析,吸收框架的思想和設(shè)計知識,加強自己對的認(rèn)知和理解。當(dāng)然,筆者能力水平有限,后續(xù)的文章如有錯誤,還請指出和諒解。目錄如下后續(xù)添加文章都會記錄在此服務(wù)啟動過程以及主體設(shè)計流程源碼解析 前言 swoole是什么?官網(wǎng)的原話介紹是這樣的: Swoole 使用純 C 語言編寫,提供了 PHP 語言的異步多線程服務(wù)器,異步 TCP/UDP 網(wǎng)絡(luò)客戶端,異步 ...

    CoXie 評論0 收藏0
  • Windows Containers 大冒險: 啟程

    摘要:個人而言,這個過程中提綱挈領(lǐng)的兩個詞是元認(rèn)知和路徑依賴。所謂元認(rèn)知就是對認(rèn)知的認(rèn)知,具體地說,是關(guān)于個人自己認(rèn)知過程的知識和調(diào)節(jié)這些過程的能力,對思維和學(xué)習(xí)活動的知識和控制。 Windows Containers 大冒險: 啟程 開場白 雖然本系列文章主要是介紹和Windows Containers的相關(guān)知識和問題處理思路,但是在討論技術(shù)的之前還是想把個人十年的工作經(jīng)驗做一個簡單的梳理...

    Shihira 評論0 收藏0
  • 用計算解決科學(xué)難題,用算法讓生活變得更好

    摘要:一科技企業(yè)做基礎(chǔ)科研的意義計算科學(xué)基礎(chǔ)研究關(guān)于計算機(jī)的基礎(chǔ)理論計算科學(xué)用計算解決科學(xué)中無法解決的難題。在微軟研究院的游學(xué)中,研究院產(chǎn)品演示方面更聚焦在生命科學(xué)上,可能也是因為疫情,讓更多科技行業(yè)開始對生命醫(yī)療進(jìn)行探索。 2021-11-24,CSDN組織了《新程序員》的讀者福利活動走進(jìn)名企—...

    不知名網(wǎng)友 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<