문제

매개 변수를 사용하는 함수로 전달하는 방법을 알려주십시오. setInterval.

내 예 setInterval(funca(10,3), 500); 부정확하다.

도움이 되었습니까?

해결책

실제 함수가 즉시 실행되지 않도록 익명 함수를 만들어야합니다.

setInterval( function() { funca(10,3); }, 500 );

다른 팁

이제 ES5를 사용하여 BIND 방법 기능 프로토 타입 :

setInterval(funca.bind(null,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라는 라이브러리를 사용할 수 있습니다. 바인드 방법에 멋진 래퍼를 제공하고 훨씬 더 깨끗한 구문입니다. 지정된 범위에서 함수를 실행할 수 있습니다.

http://underscorejs.org/#bind

_.bind (기능, 범위, *인수)

그 문제는 폐쇄 사용을위한 좋은 데모가 될 것입니다. 아이디어는 함수가 외부 범위의 변수를 사용한다는 것입니다. 여기 예입니다 ...

setInterval(makeClosure("Snowden"), 1000)

function makeClosure(name) {
var ret

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

return ret;
}

함수 "makeclosure"는 외부 스코프 변수 "이름"에 액세스 할 수있는 다른 함수를 반환합니다. 따라서 기본적으로 "makeclosure"함수에 어떤 변수를 전달하고 "ret"변수에 할당 된 함수에서 사용해야합니다. 영향력있게 SetInterval은 "ret"에 할당 된 함수를 실행합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top