创建一个有上限的循环定时器

[代码质量差][英语质量差]见笑了

今天为了实现一个“取延时差异的资源并会提示超时”的功能时有一个地方想分享出来

/**
 * 创建有上限时钟
 * @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();
            successindex++;
        }
    }
    timeobj = window.setInterval(extendCallback ,cycle);
    return timeobj;// 返回这个时钟对象,可以作用于终止
}
createUpperLimitTime(5 ,1000 ,function(){ // 测试
    console.log(1);
},function(){
    console.log(2);
});

我在做一个项目时需要做到定时POST某个资源的差异实现差异获取,但是自带的循环定时器有点不理想

上面的completeCallback回调的作用就是为了识别“超时”问题

原文地址:https://www.cnblogs.com/xiaopanpan0120/p/11066774.html

时间: 2024-10-11 22:05:59

创建一个有上限的循环定时器的相关文章

不使用循环,如何创建一个长度为100的数组

前言: 问题描述:在不使用循环的条件下,如何创建一个长度为100的数组,并且数组的每一个元素是该元素的下标? 这是一个比较经典的前端面试题,也可以当笔试题,咋一看,好像难度不大,实际上考察的知识点还不少,值得写篇文章来备忘!废话不多说,直接进入正文! 正文: 为了理解这道题的意思,我们先用传统的方法来实现一下: 使用for方法: var arr = new Array(100); for(var i=0;i<arr.length;i++){ arr[i] = i; } console.log(a

【OC学习-24】实例:创建一个文件并连续写入10次当前时间——巩固文件操作和熟悉定时器操作

(1)创建一个writeData类,在writeData.h里面: #import <Foundation/Foundation.h> @interface writeData : NSObject -(void)runWrite;//定义一个方法供调用,这个方法是创建并打开一个文件,然后利用定时器每个1秒调用另一个私有方法,这私有方法把当前时间到这个文件夹,但只写10次 @end (2)在writeData.m里面具体实现功能: #import "writeData.h"

REQUIRES_NEW 如果不在一个事务那么自己创建一个事务 如果在一个事务中 自己在这个大事务里面在创建一个子事务 相当于嵌套事务 双层循环那种

REQUIRES_NEW   如果不在一个事务那么自己创建一个事务 如果在一个事务中 自己在这个大事务里面在创建一个子事务  相当于嵌套事务 双层循环那种 不管是否存在事务,业务方法总会自己开启一个事务,如果在已有事务的环境中调用,已有事务会被挂起,新的事务会被创建,直到业务方法调用结束,已有事务才被唤醒. 原文地址:https://www.cnblogs.com/classmethond/p/10440510.html

NSTimer单循环和多循环定时器讲解

本文将通过一个简单例子介绍一下NSTimer单循环和多循环定时器的使用方法. 创建一个Xcode工程,页面比较简单: 左侧部分实现了单循环定时器的创建.暂停.开启和停止功能,而右侧部分是多循环定时器的实现. 1.单循环定时器 定义定时器: NSTimer *singleCycleTimer; // 单循环定时器 功能实现: /* 创建单循环定时器 响应页面里"单循环"按钮 */ - (IBAction)createSingleCycleTimer:(id)sender { // 注:创

分析Linux内核创建一个新进程的过程【转】

转自:http://www.cnblogs.com/MarkWoo/p/4420588.html 前言说明 本篇为网易云课堂Linux内核分析课程的第六周作业,本次作业我们将具体来分析fork系统调用,来分析Linux内核创建新进程的过程 关键词:fork, 系统调用,进程 *运行环境:** Ubuntu 14.04 LTS x64 gcc 4.9.2 gdb 7.8 vim 7.4 with vundle 分析 分析方法说明 PCB包含了一个进程的重要运行信息,所以我们将围绕在创建一个新进程时

使用nRF51822创建一个简单的BLE应用 ---入门实例手册(中文)之三

3 最小BLE应用简介 这个章节简单介绍了在nRF51822芯片上使用S110 SoftDevice协议栈构建一个最小的BLE应用的过程. 3.1初始化介绍 有一些初始化函数通常在执行一个BLE应用之前调用,下面的表格中列出了这些初始化调用函数,在后面将对它们进行详细的介绍. 大部分采用数据结构的形式作为输入参数,这些数据结构包含一系列的配置和选项信息,阅读代码中的注释能更好地理解它们. 在广播开始之后,你就进入了main函数中的for循环. 3.2 协议栈S110 SoftDevice 为了使

Android下创建一个输入法

输入法是一种可以让用户输入文字的控件.Android提供了一套可扩展的输入法框架,使得应用程序可以让用户选择各种类型的输入法,比如基于触屏的键盘输入或者基于语音.当安装了特定输入法之后,用户即可在系统设置中选择个输入法,并在接下来的输入场景中使用该输入法.不过在任一时刻,只能使用一个输入法. 为了在安卓系统下创建一个输入法,需要新建一个包含扩展了InputMethodService类的安卓应用,并创建一个用于设置的activity,用户可以通过它将设置选项传给输入法的service,因此,你还需

如何利用CEF3创建一个简单的应用程序 (Windows Platform)

1. 说明 这篇文章主要讲述如何利用CEF3来创建一个简单的应用程序,引用的是1535及以上版本中包含的 Cefsimple 项目例子.如果想知道关于CEF3更多的使用方法,可以去访问 GeneralUsage. 2. 开始 首先,根据自身所使用的开发平台,可以去 这里 下载对应的发布版本.针对这个教程,我们需要下载1750或者更新的版本.当前支持的平台有Windows, Linux和Mac OS X.每一个版本都包含了当在特定平台上编译特定版本CEF3时所需要的所有文件和资源.您可以通过包含在

Linux内核创建一个新进程的过程

进程在创建它的时刻开始存活.在Linux系统中,这通常是fork()系统的结果,该系统调用通过复制一个现有的进程来创建一个全新的进程.只有在创建init进程时,是通过代码实现数据结构的填充.调用fork()的进程称为父进程,新生的进程称为子进程.在系统调用结束时,在返回点这个相同位置上,父进程恢复执行,子进程开始执行.fork()系统调用从内核两次返回:一次回到父进程,另一次回到创建的新的子进程. 进程的描述符--task_struct (下面是中英文大体注释) volatile long st