SET Interval函数中的PASS参数?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (10)
  • 关注 (0)
  • 查看 (55)

如何在使用setInterval调用函数时传递参数。如。setInterval('funca(10,3)',500);是错误的。

提问于
用户回答回答于

你需要创建一个匿名函数,这样才不会立即执行这个函数。

setInterval( function() { funca(10,3); }, 500 );
用户回答回答于
用户回答回答于

OK --> reloadIntervalID = window.setInterval( "reloadSeries('"+param2Pass+"')" , 5000)

KO --> reloadIntervalID = window.setInterval( "reloadSeries( "+param2Pass+" )" , 5000)

注意单引号'

用IE8、Chrome和Firefox进行测试

用户回答回答于

你可以使用ES6提供的一个更新版本:

setInterval( ()=>{ funca(10,3); }, 500);
用户回答回答于
setInterval(function,milliseconds,param1,param2,...)
用户回答回答于
     setInterval(function(a,b,c){

          console.log(a + b +c);  

      }, 500, [1],[2],[3]);

           //note the console will not print 6
          // rather it will print 123 in every 500 ms
          // because arguments are passed as array not as numbers
          //  tested in node.js ie 11 and chrome
用户回答回答于

你可以使用匿名函数;

setInterval(function() { funca(10,3); },500);
用户回答回答于

可以将参数作为函数对象的属性传递,而不是作为参数传递:

var f = this.someFunction;  //use 'this' if called from class
f.parameter1 = obj;
f.parameter2 = this;
f.parameter3 = whatever;
setInterval(f, 1000);

然后在你的函数someFunction中,你可以访问这些参数。这在类中特别有用,在这些类中,作用域会自动进入全局空间,并且你将失去对名为setInterval的类的引用。在上面的示例中,“omeFunction”中的“参数2”将具有正确的作用域。

用户回答回答于

将它们作为参数添加到setInterval中:

setInterval(funca, 500, 10, 3);

你的问题中使用val,不推荐这样做。

用户回答回答于

现在使用ES5方法绑定函数原型:

setInterval(funca.bind(null,10,3),500);

扫码关注云+社区