[代碼質量差][英語質量差]見笑了函數
今天爲了實現一個「取延時差別的資源並會提示超時」的功能時有一個地方想分享出來測試
建立一個有上限的循環定時器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回調的做用就是爲了識別「超時」問題對象