Передавать параметры в функцию 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
другое решение состоит в том, чтобы передать вашу функцию таким образом (если у вас есть динамика vars) : setInterval ('funca ('+x+', ' +y+')',500);