创建一个有上限的循环定时器 - 异步解决方案
[代码质量差][英语质量差]见笑了
今天为了实现一个“取延时差异的资源并会提示超时”的功能时有一个地方想分享出来
创建一个有上限的循环定时器
/** * 创建有上限时钟 * @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某个资源的差异实现差异获取,但是自带的循环定时器有点不理想
上面的completeCallback回调的作用就是为了识别“超时”问题