最近遇到一个问题, 定时器每隔1秒发一次请求,要求本次请求成功后才能发下一次请求,需要把定时器弄成同步的
至于怎么弄成同步的,真是一把心酸泪呀
直接贴代码吧
```
<div style="height: 100px;width: 200px;float: right;">
  <button id="btn">Clear Timer</button>
</div>
<script type="text/javascript">
  var timer = {
    timers:{},
    start:function(asyn,fun,delay,id){
      if(typeof fun === "function"){
        var args = Array.prototype.slice.call(arguments,4),t,func,_this = this;
        func = function(args){
          var ags = arguments;
          if(!Array.isArray) {
            Array.isArray = function (vArg) {
              return Object.prototype.toString.call(vArg) === "[object Array]";
            };
          }
          if(!Array.isArray(args))
            ags = Array.prototype.slice.call(arguments,0)
          else
            ags = args;
          fun.apply(null,ags);
          if(asyn){
            console.log("asynchronous timer");
            _this.timers[id] = setInterval(function(){
              fun.apply(null,ags);
            },delay);
          }else{
            console.log("synchronous timer");
            _this.timers[id] = setTimeout(function(){
              func.apply(null,ags);
            },delay);
          }
        };
        setTimeout(func,delay,args);
      }
    },
    clear:function(id){
      clearTimeout(this.timers[id]);
      clearInterval(this.timers[id]);
      delete this.timers.id;
    }

  };
  function f1(p){
   console.log("f1() : param1 : "+p+" , param2 : "+arguments[1] + " , param3 : "+arguments[2] + " " + new Date());
  }
  //test
  //timer.start(true,f1,2000,"asyn","aa","bb","cc");
  timer.start(false,f1,2000,"asyn","aa","bb","cc");

  $("#btn").click(function(){
    $.each(timer.timers,function(k,v){
    console.log("key : "+k+" , v : "+v);
  })
  timer.clear("asyn")
});
</script>
```

同步的执行结果如下:

异步的执行结果如下:

转载于:https://www.cnblogs.com/Regina-wisdom/p/10826830.html

js 怎样把定时器弄成同步的相关推荐

  1. js 多个定时器_JS中的同步/异步编程

    1. 进程(process)/线程(thread) 进程process: 电脑端安装很多的应用软件,每当运行一个应用程序,相当于开辟一个进程(而对于浏览器来说,每新建一个页卡访问一个页面,都是新开辟一 ...

  2. python代码弄成网站_原创:用python把链接指向的网页直接生成图片的http服务及网站(含源码及思想)...

    原创:用python把链接指向的网页直接生成图片的http服务及网站(含源码及思想) 总体思想: 希望让调用方通过 http调用传入一个需要生成图片的网页链接生成一个网页的图片并返回图片链接 最终调用 ...

  3. 用JS实现歌词与播放音乐同步

    用JS实现歌词与播放音乐同步 第一步:把歌词解析成JS对象 参看我的上一篇文章:用JS解析LRC格式的歌词 解析后的歌词写到页面的一个列表中,效果如下: 主要HTML代码: <!-- 播放器 - ...

  4. html的script怎么转化成js,html转换js html代码如何转换成js文件

    html代码如何转换成js文件 这个很简单 首先你要把html代码转成js代码 有这种转换工具的 搜下代码转换工具就可以 再把你转换好了的代码放到文本中 把后缀名改成点js就可以了 可以用txt文档改 ...

  5. java同步转化成异步_Java 如何把异步调用模拟成同步调用

    在某些时候,须要把异步调用模拟成同步调用的形态.例如,基于基于异步通讯的客户端须要同步调用. :-)异步 要实现这个转换,能够有多种实现方法:this 1.很经常使用的方法,应用循环机制:spa bo ...

  6. [vue-cli]vue-cli默认是单页面的,那要弄成多页面该怎么办呢

    [vue-cli]vue-cli默认是单页面的,那要弄成多页面该怎么办呢 创建多个app? app =new Vue({}) app2 = new Vue({}) 个人简介 我是歌谣,欢迎和大家一起交 ...

  7. html倒计时timer,js如何使用定时器实现倒计时功能

    这次给大家带来js如何使用定时器实现倒计时功能,js使用定时器实现倒计时功能的注意事项有哪些,下面就是实战案例,一起来看一下. 日期函数 倒计时 = 用 将来的时间 - 现在的时间 问题:将来时间 距 ...

  8. 怎么把ppt弄成链接的形式_视频引流的方法,教你怎么用视频引流日引500

    ​大家好,我是聪少,今天来给大家分享一下视频引流的方法,教你怎么用视频引流实现日引500+的粉丝. 文章内容包含这4个部分: 什么是视频引流? 传统视频平台有哪些? 视频引流的原理? 如何实现通过视频 ...

  9. 有没有能把excel表弄成线上多人填报的办法?

    把Excel表弄成线上多人填报,最省时省力的方法就是使用在线协作的文档,现在普通的本地Office已经无法满足办公人员移动办公的需求,永中优云这款协作办公工具就能将Excel协作分享至社交群,让多个成 ...

  10. JS将/Date(1446704778000)/转换成string

    JS将/Date(1446704778000)/转换成str: var dateStr = eval(ele.add_time.replace(/\/Date\((\d+)\)\//gi, " ...

最新文章

  1. 嵌入式系统学习笔记之五-- uboot常用命令 概述
  2. java calendar与date_java---Calendar与Date
  3. 读源码Apache-commons-lang3-3.1(三)
  4. MATLAB实现偏最小二乘回归PLS
  5. 内蒙古大学计算机组成原理实验,内蒙古大学计算机组成原理期末练习0
  6. Xcode + cocoapods + jenkins + fastlane + git + 蒲公英自动化打包 上传
  7. (zt)ACE中的Proactor介绍和应用实例
  8. jfreechart 多参数传递
  9. smartsvn 8.6.6 for linux 的安装与破解
  10. LSET与LREM结合删除list中特定索引的值
  11. 年度调薪一般涨多少_如何回答别人询问工资?高情商的人一般选择这样巧妙答复...
  12. vue脚手架安装 axios 安装 配置 轮播图
  13. 前端基础:通过HTML技术布局《李白诗词赏析》
  14. MKS-DLC雕刻MKS_TFT_CNC字机器,CNC雕刻,激光雕刻GRBL使用方法
  15. 使用阿里巴巴EasyExcel导出的excel打不开(无法打开文件)
  16. 发现一个有意思的奇葩极客网站
  17. 计算机无法自动连接网络连接,win7系统开机后无线网络无法自动连接的解决方法...
  18. 固态硬盘正确分区方法,好用的硬盘分区工具
  19. R语言绘制空气污染图
  20. 软件工程具体有哪些方向呢

热门文章

  1. removeAttribute与removeAttributeNode的区别
  2. NYOJ-769乘数密码,逆元解法;
  3. thinkphp 3.2视图里添加URL参数 实例
  4. office2010安装报错
  5. 过去的七天我是这样过的
  6. chart控件怎么使x轴标签全部显示出来
  7. 在PhpStorm9中与Pi的xdebug进行调试
  8. C#使用QQ邮箱发送邮件
  9. Thinking in C++ ----第二章 对象的创建和使用
  10. 两个多变量分布间的KL散度+变分子编码