Посоветуйте, пожалуйста, как передать параметры в функцию под названием using setInterval
.
Мой пример setInterval(funca(10,3), 500);
неверен.
Посоветуйте, пожалуйста, как передать параметры в функцию под названием using setInterval
.
Мой пример setInterval(funca(10,3), 500);
неверен.
.setInterval(func, delay[, param1, param2, ...]);
Ответы:
Вам необходимо создать анонимную функцию, чтобы фактическая функция не выполнялась сразу.
источник
function createInterval(f,dynamicParameter,interval) { setInterval(function() { f(dynamicParameter); }, interval); }
Затем назовите это какcreateInterval(funca,dynamicValue,500);
Очевидно, вы можете расширить это для более чем одного параметра. И, пожалуйста, используйте более описательные имена переменных. :)funca
?теперь с ES5, метод связывания Прототип функции:
Ссылка здесь
источник
console.log.bind(null)("Log me")
скинуIllegal invocation
, ноconsole.log.bind(console)("Log me")
будет работать как положено. Это потому, чтоconsole.log
требуетconsole
в качествеthis
аргумента.Добавьте их в качестве параметров в setInterval:
Синтаксис в вашем вопросе использует eval, что не рекомендуется на практике.
источник
Вы можете передать параметр (ы) как свойство объекта функции, а не как параметр:
Тогда в вашей функции у
someFunction
вас будет доступ к параметрам. Это особенно полезно внутри классов, где область действия автоматически переходит в глобальное пространство, и вы теряете ссылки на класс, который вызвал setInterval для начала. При таком подходе «parameter2» в «someFunction», в приведенном выше примере, будет иметь правильную область видимости.источник
источник
Вы можете использовать анонимную функцию;
источник
Обновление: 2018 - используйте оператор "распространение"
источник
Безусловно, самый практичный ответ - тот, который дает tvanfosson, все, что я могу сделать, это дать вам обновленную версию с ES6:
источник
Цитировать аргументы должно быть достаточно:
Обратите внимание на одинарные кавычки
'
для каждого аргумента.Протестировано с IE8, Chrome и FireFox
источник
Я знаю, что эта тема настолько старая, но вот мое решение о передаче параметров в
setInterval
функцию.Html:
JavaScript:
источник
timer
), но как выclearInterval()
в этом сценарии?Это работает
setInterval("foo(bar)",int,lang);
.... Джон Клейзер привел меня к ответу.источник
Другое решение состоит в том, чтобы передать вашу функцию следующим образом (если у вас есть динамические переменные): setInterval ('funca (' + x + ',' + y + ')', 500);
источник
Вы можете использовать библиотеку с именем underscore js. Он дает хорошую обертку для метода bind, а также намного более чистый синтаксис. Позволяет вам выполнить функцию в указанной области.
http://underscorejs.org/#bind
_.bind (функция, область действия, * аргументы)
источник
Эта проблема была бы хорошей демонстрацией использования крышек. Идея состоит в том, что функция использует переменную внешней области видимости. Вот пример ...
Функция «makeClosure» возвращает другую функцию, которая имеет доступ к внешней области видимости переменной «name». Таким образом, в основном вам нужно передать любые переменные в функцию «makeClosure» и использовать их в функции, назначенной переменной «ret». В результате setInterval выполнит функцию, назначенную «ret».
источник
У меня была такая же проблема с приложением Vue. В моем случае это решение работает только в том случае, если анонимная функция объявлена как функция стрелки, в отношении объявления на
mounted ()
хуке жизненного цикла.источник