setInterval이 임의의 인수를 사용하여 함수를 호출하는 이유는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/86269

  •  01-07-2019
  •  | 
  •  

문제

그래서 궁금한 문제가 보입니다.나에게 기능이 있다면

// counter wraps around to beginning eventually, omitted for clarity.
var counter; 
cycleCharts(chartId) {
    // chartId should be undefined when called from setInterval
    console.log('chartId: ' + chartId);
    if(typeof chartId == 'undefined' || chartId < 0) {
        next = counter++;
    }
    else {
        next = chartId;
    }
    // ... do stuff to display the next chart
}

이 함수는 사용자 작업에 의해 명시적으로 호출될 수 있습니다. chartId 인수로 전달되고 선택한 차트가 표시됩니다.또는 자동 재생 모드일 수 있습니다. 이 경우 setInterval 이는 다음에 의해 초기화됩니다.

var cycleId = setInterval(cycleCharts, 10000);

이상한 점은 내가 실제로 그 장면을 보고 있다는 것이다. cycleCharts() 도착 chartId 인수가 호출될 때에도 인수 setInterval!그만큼 setInterval 전달할 매개변수조차 없습니다. cycleCharts 기능이 있는데 왜 그런 것인지 매우 당황스럽습니다. chartId 다음과 같은 경우는 정의되지 않습니다. cycleCharts 에서 호출됩니다 setInterval.

도움이 되었습니까?

해결책

setInterval은 CycleCharts에 실제 타이밍 데이터를 공급합니다. 따라서 실제 실행 시간을 계산하고 덜 부자연스러운 응답을 생성하는 데 사용할 수 있으며 대부분 애니메이션에서 실용적입니다.

당신이 원하는

 var cycleId = setInterval(function(){ cycleCharts(); }, 10000); 

(이 동작은 표준화되어 있지 않을 수 있으므로 너무 의존하지 마세요.)

다른 팁

콜백 호출이 몇 밀리초 늦게 호출되었는지 알려줍니다.

var CycleId = setInterval(cycleCharts, 10000, 4242);

세 번째 매개변수부터는 함수에 전달되므로 제 예에서는 4242를 ChartId로 보냅니다.나는 그것이 당신이 제기한 질문에 대한 답이 아닐 수도 있다는 것을 압니다. 그러나 그것이 당신의 문제에 대한 해결책이 될 수도 있습니까?나는 그것이 얻는 값이 메소드를 전달/호출할 때 스택에 있는 모든 것에서 무작위라고 생각합니다.

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