Передать параметры в функцию setInterval - PullRequest
292 голосов
/ 19 января 2009

Посоветуйте, пожалуйста, как передать параметры в функцию, вызываемую с помощью setInterval.

Мой пример setInterval(funca(10,3), 500); неверен.

Ответы [ 14 ]

0 голосов
/ 02 января 2019

Эта проблема будет хорошей демонстрацией использования замыканий. Идея состоит в том, что функция использует переменную внешней области видимости. Вот пример ...

setInterval(makeClosure("Snowden"), 1000)

function makeClosure(name) {
var ret

ret = function(){
    console.log("Hello, " + name);
}

return ret;
}

Функция «makeClosure» возвращает другую функцию, которая имеет доступ к внешней области видимости переменной «name». Итак, в основном вам нужно передать любые переменные в функцию «makeClosure» и использовать их в функции, назначенной переменной «ret». В результате setInterval выполнит функцию, назначенную для «ret».

0 голосов
/ 04 марта 2015

Вы можете использовать библиотеку с именем underscore js. Он дает хорошую обертку для метода bind, а также намного более чистый синтаксис. Позволяет вам выполнить функцию в указанной области.

http://underscorejs.org/#bind

_. Bind (функция, область действия, * аргументы)

0 голосов
/ 16 февраля 2014

Другое решение состоит в том, чтобы передать вашу функцию следующим образом (если у вас есть динамические переменные): setInterval ( 'funca (' + х + ' '+ у +')', 500);

0 голосов
/ 04 декабря 2011

Это работает setInterval("foo(bar)",int,lang); .... Джон Клейзер приведет меня к ответу.

...