SetInterval 함수에서 매개 변수를 전달합니다
-
19-08-2019 - |
문제
매개 변수를 사용하는 함수로 전달하는 방법을 알려주십시오. setInterval
.
내 예 setInterval(funca(10,3), 500);
부정확하다.
해결책
실제 함수가 즉시 실행되지 않도록 익명 함수를 만들어야합니다.
setInterval( function() { funca(10,3); }, 500 );
다른 팁
setInterval에 매개 변수로 추가하십시오.
setInterval(funca, 500, 10, 3);
질문의 구문은 평가를 사용하는 것이 권장되지 않습니다.
매개 변수가 아닌 매개 변수를 함수 객체의 속성으로 전달할 수 있습니다.
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);
}
이것은 작동합니다 setInterval("foo(bar)",int,lang);
.... 존 클리저 저를 대답으로 인도하십시오.
또 다른 솔루션은 (Dynamics vars가있는 경우) 기능과 같은 기능으로 구성됩니다.
Outscore JS라는 라이브러리를 사용할 수 있습니다. 바인드 방법에 멋진 래퍼를 제공하고 훨씬 더 깨끗한 구문입니다. 지정된 범위에서 함수를 실행할 수 있습니다.
_.bind (기능, 범위, *인수)
그 문제는 폐쇄 사용을위한 좋은 데모가 될 것입니다. 아이디어는 함수가 외부 범위의 변수를 사용한다는 것입니다. 여기 예입니다 ...
setInterval(makeClosure("Snowden"), 1000)
function makeClosure(name) {
var ret
ret = function(){
console.log("Hello, " + name);
}
return ret;
}
함수 "makeclosure"는 외부 스코프 변수 "이름"에 액세스 할 수있는 다른 함수를 반환합니다. 따라서 기본적으로 "makeclosure"함수에 어떤 변수를 전달하고 "ret"변수에 할당 된 함수에서 사용해야합니다. 영향력있게 SetInterval은 "ret"에 할당 된 함수를 실행합니다.