资讯专栏INFORMATION COLUMN

如何让setInterval定时器里面的函数先触发一次再正常延时执行

aervon / 1313人阅读

摘要:如查看官方文档不难发现,,因此,如果需求确实要先执行以下原函数,再返回该函数给周期执行。此时可以如下实现若不返回时,此函数只会执行一次当然这里也可以先执行原函数,再加定时器,只是这样写的不漂亮吗为什么不呢

需求背景

最近经常遇到这样的问题:需要间隔多少秒获取一次数据。实际中,往往采用setInterval来实现,但是当参数传递不当时,会出现先延迟了一段时间后再执行获取的数据的函数。

如:

var data1=0;
function count1(){
  console.log("count1:",data1++);
}
setInterval(count1,1000);

此时可以观察控制台,发现打印第一次会有延迟。如:

查看setInterval官方文档不难发现:

var intervalID = window.setInterval(func, delay[, param1, param2, ...]);
var intervalID = window.setInterval(code, delay);
Parameters

func,A function to be executed every delay milliseconds.






  code,


An optional syntax allows you to include a string instead of a function, which is compiled and executed every delay milliseconds. This syntax is not recommended for the same reasons that make using eval() a security risk.

因此,如果需求确实要先执行以下原函数,再返回该函数给setInterval周期执行。此时可以如下实现:

var data2=0;
var count2= function(){
  console.log("count2:",data2++);
  return count2;//若不返回时,此函数只会执行一次
}
setInterval(count2(),1000);

当然这里也可以先执行原函数,再加定时器setInterval,只是这样写的不漂亮吗?为什么不呢

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/106547.html

相关文章

  • JavaScript时器工作原理

    摘要:创建了一个简单的计时器,在经过给定的时间后,回调函数将会被执行。接受一个计时器由之前两种计时器返回并且停止计时器回调函数的执行。然而,我们可以注意到,当定时器再一次触发在计时器回调函数正在执行的时候,这一次定时器回调函数被丢弃了。 最近都在看一些JavaScript原理层面的文章,恰巧看到了jQuery的作者的一篇关于JavaScript计时器原理的解析,于是诚惶诚恐地决定把原文翻译成...

    geekzhou 评论0 收藏0
  • 重新认识时器

    摘要:重新认识三如果被推迟执行的回调函数是某个对象的方法,那么该方法中的关键字将指向全局环境,而不是定义时所在的那个对象。 重新认识一 一般,setTimeout函数接受两个参数,第一个参数func|code是将要推迟执行的函数名或者一段代码(引擎内部使用eval函数,将字符串转为代码),第二个参数delay是推迟执行的毫秒数。但是,setTimeout 还可以添加更多参数。第二个之后的参数...

    paney129 评论0 收藏0
  • 从setTimeout-setInterval看JS线程

    摘要:提出标准,允许脚本创建多个线程,但是子线程完全受主线程控制,且不得操作。所以,这个新标准并没有改变单线程的本质。事件循环主线程线程只会做一件事,就是从消息队列里面取消息执行消息,再取消息再执行。工作线程是生产者,主线程是消费者。 最近项目中遇到了一个场景,其实很常见,就是定时获取接口刷新数据。那么问题来了,假设我设置的定时时间为1s,而数据接口返回大于1s,应该用同步阻塞还是异步?我们...

    elliott_hu 评论0 收藏0
  • javascript异步编程详解

    摘要:在服务器端,异步模式甚至是唯一的模式,因为执行环境是单线程的,如果允许同步执行所有请求,服务器性能会急剧下降,很快就会失去响应。第三是,捕捉不到他的错误异步编程方法回调函数这是异步编程最基本的方法。 前言 你可能知道,Javascript语言的执行环境是单线程(single thread)。所谓单线程,就是指一次只能完成一件任务。如果有多个任务,就必须排队,前面一个任务完成,再执行后面...

    huangjinnan 评论0 收藏0
  • 《高性能javascript》阅读摘要

    摘要:当执行上下文被创建时,它的作用域链初始化为当前运行函数的属性中的对象。该过程搜索执行环境的作用域链,查找同名的标识符。搜索实例成员比从字面量或局部变量中读取数据代价更高,再加上遍历原型链带来的开销,这让性能问题更为严重。 最近在阅读这本Nicholas C.Zakas(javascript高级程序设计作者)写的最佳实践、性能优化类的书。记录下主要知识。 加载和执行 脚本位置 放在中的...

    duan199226 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<