成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

javascript中,如何用setTimeout函數(shù)模擬實現(xiàn)setInterval函數(shù)?

邱勇 / 1882人閱讀

摘要:定義對象,用于保存映射到真實每調(diào)用一次就會自增的一個這里注意要使用局部變量保存哦,避免函數(shù)內(nèi)部直接引用,因為可能會再次變化說明使用時除了需要加上一個對象做命名空間外其實也是沒辦法哦,因為和需要共享一個叫做的映射表,其他與直接調(diào)用原生,無異舉

talk is cheap:

var util = (function(){
    //定義intervalObj對象,用于保存intervalId映射到真實timeoutId
    var intervalObj = {}
    //每調(diào)用一次_setInterval就會自增1的一個intervalId
    var intervalId = 0

    var _setInterval = function(fn, interval){
        //這里注意要使用局部變量保存intervalId哦,避免next函數(shù)內(nèi)部直接引用intervalId,因為intervalId可能會再次變化
        var thisIntervalId = ++intervalId
        function next(){
            intervalObj[thisIntervalId] = setTimeout(function(){
                fn()
                next()
            }, interval)
        }
        next()
        return thisIntervalId
    }

    var _clearInterval = function(intervalId){
        clearTimeout(intervalObj[intervalId])
    }

    return {setInterval: _setInterval, clearInterval: _clearInterval}

})()

說明:使用時除了需要加上一個util對象做命名空間外(其實也是沒辦法哦,因為util.setInterval和util.clearInterval需要共享一個叫做intervalObj的映射表),其他與直接調(diào)用原生setInterval,clearInterval無異

舉個栗子?:

//開始一個定時執(zhí)行函數(shù)
var intervalId = util.setInterval(function(){
    console.log("a")
}, 1000)

//10秒之后,清除掉定時器
setTimeout(function(){
    //實際清除代碼
    util.clearInterval(intervalId)
}, 10000)

各路大神如果其他解決方案,請一定要留言賜教,并收下我的膝蓋

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

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

相關(guān)文章

  • 瀏覽器渲染機制

    摘要:瀏覽器渲染進程瀏覽器內(nèi)核進程,內(nèi)部是多線程的默認每個頁面一個進程,互不影響。事件觸發(fā)線程歸屬于瀏覽器而不是引擎,用來控制事件循環(huán)可以理解成引擎自己都忙不過來,需要瀏覽器另開線程協(xié)助。 線程和進程 進程和線程的概念可以這樣理解: 進程是一個工廠,工廠有它的獨立資源--工廠之間相互獨立--線程是工廠中的工人,多個工人協(xié)作完成任務(wù)--工廠內(nèi)有一個或多個工人--工人之間共享空間 工廠有多個工人...

    appetizerio 評論0 收藏0
  • 瀏覽器渲染機制

    摘要:瀏覽器渲染進程瀏覽器內(nèi)核進程,內(nèi)部是多線程的默認每個頁面一個進程,互不影響。事件觸發(fā)線程歸屬于瀏覽器而不是引擎,用來控制事件循環(huán)可以理解成引擎自己都忙不過來,需要瀏覽器另開線程協(xié)助。 線程和進程 進程和線程的概念可以這樣理解: 進程是一個工廠,工廠有它的獨立資源--工廠之間相互獨立--線程是工廠中的工人,多個工人協(xié)作完成任務(wù)--工廠內(nèi)有一個或多個工人--工人之間共享空間 工廠有多個工人...

    lncwwn 評論0 收藏0
  • 淺析JavaScript異步

    摘要:回調(diào)函數(shù),一般在同步情境下是最后執(zhí)行的,而在異步情境下有可能不執(zhí)行,因為事件沒有被觸發(fā)或者條件不滿足。同步方式請求異步同步請求當請求開始發(fā)送時,瀏覽器事件線程通知主線程,讓線程發(fā)送數(shù)據(jù)請求,主線程收到 一直以來都知道JavaScript是一門單線程語言,在筆試過程中不斷的遇到一些輸出結(jié)果的問題,考量的是對異步編程掌握情況。一般被問到異步的時候腦子里第一反應(yīng)就是Ajax,setTimse...

    Tangpj 評論0 收藏0
  • js 執(zhí)行機制 事件循環(huán)

    摘要:事件完成,回調(diào)函數(shù)進入。我們來分析一段較復雜的代碼,看看你是否真的掌握了的執(zhí)行機制第一輪事件循環(huán)流程分析如下整體作為第一個宏任務(wù)進入主線程,遇到,輸出。宏任務(wù)微任務(wù)第三輪事件循環(huán)宏任務(wù)執(zhí)行結(jié)束,執(zhí)行兩個微任務(wù)和。 關(guān)于JavaScript 首先js是單線程的,執(zhí)行任務(wù)肯定是一個接著一個。在最新的html5中提出了web-worker,但是JavaScript是單線程這一核心沒有改變,一...

    JackJiang 評論0 收藏0
  • Javascript定時器那些事兒

    摘要:一什么是定時器提供了一些原生方法來實現(xiàn)延時去執(zhí)行某一段代碼,下面來簡單介紹一下設(shè)置一個定時器,在定時器到期后執(zhí)行一次函數(shù)或代碼段定時器延遲后執(zhí)行的函數(shù)延遲后執(zhí)行的代碼字符串,不推薦使用原理類似延遲的時間單位毫秒,默認值為向延遲函數(shù)傳遞而外的 一、什么是定時器 JS提供了一些原生方法來實現(xiàn)延時去執(zhí)行某一段代碼,下面來簡單介紹一下 setTimeout: 設(shè)置一個定時器,在定時器到期后執(zhí)行...

    Riddler 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<