답변:
실제 함수가 즉시 실행되지 않도록 익명 함수를 작성해야합니다.
setInterval( function() { funca(10,3); }, 500 );
function createInterval(f,dynamicParameter,interval) { setInterval(function() { f(dynamicParameter); }, interval); }
그런 다음 createInterval(funca,dynamicValue,500);
두 개 이상의 매개 변수에 대해 이것을 확장 할 수 있습니다. 보다 구체적인 변수 이름을 사용하십시오. :)
funca
있습니까?
console.log.bind(null)("Log me")
throw Illegal invocation
하지만 console.log.bind(console)("Log me")
예상대로 작동합니다. 이는 인수 로 console.log
필요 하기 때문 입니다. console
this
매개 변수로 설정하여 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이라는 클래스에 대한 참조를 잃는 클래스 내에서 특히 유용합니다. 이 방법을 사용하면 위의 예에서 "someFunction"의 "parameter2"에 올바른 범위가 있습니다.
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
익명 함수를 사용할 수 있습니다.
setInterval(function() { funca(10,3); },500);
setInterval(function,milliseconds,param1,param2,...)
업데이트 : 2018- "확산"연산자 사용
function repeater(param1, param2, param3){
alert(param1);
alert(param2);
alert(param3);
}
let input = [1,2,3];
setInterval(repeater,3000,...input);
지금까지 가장 실용적인 답변은 tvanfosson이 제공 한 답변입니다. ES6으로 업데이트 된 버전을 제공하면됩니다.
setInterval( ()=>{ funca(10,3); }, 500);
인수를 인용하면 충분합니다.
OK --> reloadIntervalID = window.setInterval( "reloadSeries('"+param2Pass+"')" , 5000)
KO --> reloadIntervalID = window.setInterval( "reloadSeries( "+param2Pass+" )" , 5000)
'
각 인수에 작은 따옴표 를 적어 둡니다.
IE8, Chrome 및 FireFox로 테스트
나는이 주제가 너무 오래되었다는 것을 알고 있지만 여기에 setInterval
함수에 매개 변수를 전달하는 방법에 대한 해결책이 있습니다.
HTML :
var fiveMinutes = 60 * 2;
var display = document.querySelector('#timer');
startTimer(fiveMinutes, display);
자바 스크립트 :
function startTimer(duration, display) {
var timer = duration,
minutes, seconds;
setInterval(function () {
minutes = parseInt(timer / 60, 10);
seconds = parseInt(timer % 60, 10);
minutes = minutes < 10 ? "0" + minutes : minutes;
seconds = seconds < 10 ? "0" + seconds : seconds;
display.textContent = minutes + ":" + seconds;
--timer; // put boolean value for minus values.
}, 1000);
}
timer
하지만 clearInterval()
이 시나리오에서 어떻게합니까 ?
밑줄 js라는 라이브러리를 사용할 수 있습니다. 바인드 메소드에 멋진 래퍼를 제공하며 구문도 훨씬 깔끔합니다. 지정된 범위에서 함수를 실행할 수 있습니다.
_.bind (함수, 범위, * 인수)
이 문제는 클로저 사용에 대한 훌륭한 데모가 될 것입니다. 아이디어는 함수가 외부 범위의 변수를 사용한다는 것입니다. 예를 들면 다음과 같습니다.
setInterval(makeClosure("Snowden"), 1000)
function makeClosure(name) {
var ret
ret = function(){
console.log("Hello, " + name);
}
return ret;
}
"makeClosure"함수는 외부 범위 변수 "name"에 액세스 할 수있는 다른 함수를 반환합니다. 따라서 기본적으로 "makeClosure"함수에 변수를 전달하고 "ret"변수에 지정된 함수에 변수를 사용해야합니다. 이에 따라 setInterval은 "ret"에 지정된 기능을 실행합니다.
Vue 앱과 동일한 문제가있었습니다. 필자의 경우이 솔루션은 익명 함수가 mounted ()
생명 고리 후크 선언과 관련하여 화살표 함수로 선언 된 경우에만 작동합니다 .
.setInterval(func, delay[, param1, param2, ...]);