2010-06-03 3 views
5

Я хочу периодически вызывать функцию с аргументом.для вызова функции javascript периодически

Я пробовал setTimeout("fnName()",timeinseconds); и он работает.

Но когда я добавляю аргумент, это не сработает. например: setTimeout("fnName('arg')",timeinseconds);

+0

Я не думаю, что вам нужно '' – ant

+0

Без аргументов это должно быть просто 'setTimeout (fnName, timeinseconds);' Вы не можете делать 'setTimeout (fnName(), timeinseconds);' поскольку это вызовет теперь функция. –

+0

@Matthew Flaschen - Это в кавычках в вопросе :) –

ответ

12

Вы можете добавить анонимную функцию:

setTimeout(function() { fnName("Arg"); }, 1000); 
+0

стоит упомянуть - это называется «currying» :) –

+0

@ Yonatan приятно, никогда не слышал об этом :) Вы имеете в виду, что вызов в анонимную функцию? –

+0

setTimeout не вызывает функцию повторно, но setInterval вызывает повторно – shin

2

Используйте анонимную функцию, например:

setTimeout(function() { fnName('arg'); }, time); 

В общем, никогда передать строку в setTimeout() или setInterval() если вы можете избежать этого, есть другие побочные эффекты, кроме плохой практики ... например область, в которой вы находитесь, когда она запускается.

Подобно тому, как побочный сведению, если вы не нужен аргумент, это просто:

setTimeout(fnName, time); 
0

SetTimeout принимает выражение или имя в функции или анонимной функцию но НЕТ () оператора.

() немедленно начнет выполнение функции и даст setTimeout принять недопустимый параметр.

Смежные вопросы