建立一個有上限的循環定時器 - 異步解決方案

[代碼質量差][英語質量差]見笑了函數

今天爲了實現一個「取延時差別的資源並會提示超時」的功能時有一個地方想分享出來測試

建立一個有上限的循環定時器spa

/**
 * 建立有上限時鐘
 * @param  {int}   upperlimit       上限次數
 * @param  {int}   cycle            間隔時間
 * @param  {Function} callback         回調函數
 * @param  {Function}   completeCallback 執行完畢後調用的函數
 * @return {Object}                    返回一個時鐘對象
 */
function createUpperLimitTime(_upperlimit ,cycle ,callback ,completeCallback){
    var successindex = 0;
    var timeobj;
    var upperlimit=_upperlimit;
    // 先看到了沒再執行
    console.log("定時器開始");
    console.log(upperlimit);
    var extendCallback = function(){
        if (successindex >= upperlimit){
            clearTimeout(timeobj);
            completeCallback();// 完成後對時鐘實例基本無需什麼操做了,所以這裏不提供也行
        }else {
            callback(timeobj);// 實際上這個回調函數是能夠得到時鐘實例的
            successindex++;
        }
    }
    timeobj = window.setInterval(extendCallback ,cycle);
    return timeobj;// 返回這個時鐘對象,能夠做用於終止
}

createUpperLimitTime(
5 ,1000 ,function(){ // 測試 console.log(1); },function(){ console.log(2); });

 

我在作一個項目時須要作到定時POST某個資源的差別實現差別獲取,可是自帶的循環定時器有點不理想code

上面的completeCallback回調的做用就是爲了識別「超時」問題對象

相關文章
相關標籤/搜索