国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

javascript中,如何用setTimeout函數模擬實現setInterval函數?

邱勇 / 1844人閱讀

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

talk is cheap:

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

    var _setInterval = function(fn, interval){
        //這里注意要使用局部變量保存intervalId哦,避免next函數內部直接引用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的映射表),其他與直接調用原生setInterval,clearInterval無異

舉個栗子?:

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

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

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/85196.html

相關文章

  • 瀏覽器渲染機制

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

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

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

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

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

    Tangpj 評論0 收藏0
  • js 執行機制 事件循環

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

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

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

    Riddler 評論0 收藏0

發表評論

0條評論

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