最近常常遇到这样的问题:须要间隔多少秒获取一次数据。实际中,每每采用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