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

需求背景

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

如:code

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

此时能够观察控制台,发现打印第一次会有延迟。如: 文档

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

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.it

所以,若是需求确实要先执行如下原函数,再返回该函数给setInterval周期执行。此时能够以下实现:io

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

固然这里也能够先执行原函数,再加定时器setInterval,只是这样写的不漂亮吗?为何不呢console

相关文章
相关标签/搜索