Передать параметры в функции setInterval
Как передать параметр при вызове функции с помощью setInterval.
именно. setInterval('funca(10,3)',500);
некорректно.
13 ответов
вам нужно создать анонимную функцию, чтобы фактическая функция не выполнялась сразу.
setInterval( function() { funca(10,3); }, 500 );
добавьте их в качестве параметров в setInterval:
setInterval(funca, 500, 10, 3);
синтаксис в вашем вопросе использует eval,что не рекомендуется.
вы можете передать параметр (ы) как свойство объекта функции, а не как параметр:
var f = this.someFunction; //use 'this' if called from class
f.parameter1 = obj;
f.parameter2 = this;
f.parameter3 = whatever;
setInterval(f, 1000);
тогда в вашей функции someFunction
, у вас будет доступ к параметрам. Это особенно полезно внутри классов, где область автоматически переходит в глобальное пространство,и вы теряете ссылки на класс, который называется setInterval. При таком подходе " parameter2 "в" someFunction", в приведенном выше примере, будет иметь правильную область.
setInterval(function(a,b,c){
console.log(a + b +c);
}, 500, 1,2,3);
//note the console will print 6
//here we are passing 1,2,3 for a,b,c arguments
// tested in node v 8.11 and chrome 69
на сегодняшний день наиболее практичным ответом является тот, который дал tvanfosson, все, что я могу сделать, это дать вам обновленную версию с ES6:
setInterval( ()=>{ funca(10,3); }, 500);
цитирования аргументов должно быть достаточно:
OK --> reloadIntervalID = window.setInterval( "reloadSeries('"+param2Pass+"')" , 5000)
KO --> reloadIntervalID = window.setInterval( "reloadSeries( "+param2Pass+" )" , 5000)
обратите внимание на одиночные кавычки '
для каждого аргумента.
протестировано с IE8, Chrome и FireFox
другое решение состоит в том, чтобы передать вашу функцию так (если у вас есть dynamics vars) : setInterval ('funca ('+x+', ' +y+')',500);
вы можете использовать библиотеку под названием underscore js. Он дает хорошую обертку для метода bind и является гораздо более чистым синтаксисом. Позволяет выполнять функцию в указанной области.
_.bind (функция, область, *аргументы)