2012-05-31 2 views
2

둘 이상의 변수 (둘 이상)가 둘 다 자체 setInterval 객체에 할당되어 있고 각 setInterval 객체가 다른 함수와 다른 인터페이스를 갖는 시나리오를 만들려고합니다. 밀리 초 값. 목표는 서로 다른 두 개의 오디오 파일을 반복적으로 재생하는 기능을 실행하여이 둘 사이의 리듬을 만드는 것입니다.setInterval을 사용하여 두 개의 함수를 시작하고 즉시 지연없이 시작합니다.

설정 한 경우에는 간격이 1000로 설정되어 있고 다른 하나는하지 시작 바로 각자가하는 500으로 설정됩니다

내가 건너 한 현재의 문제

이있다. 밀리 초 지연은 시작 시간이 인 부분의 입니다. 시작 시간에 지연을 생략하는 방법을 알고 싶습니다. 그러면 두 함수가 즉시 시작되지만 각 함수는 각각의 간격 시간을 유지합니다.

"논리"는 지금까지 떠올랐다. 밀리 초 값으로 오디오를 즉시 재생 한 다음 x 밀리 초를 재생하는 setInterval에 할당 된 다른 함수 이전에 다음 번 "beat"에서 차이를 만들어 냈습니다. 나는 논리가 소리가 나는지 궁금하거나, 이것이 "잘 알지 못하는"재래식 자바 스크립트 솔루션이 존재하는 문제인 경우 더 흥미 롭습니다. 더 쉬운 방법이있는 것처럼 보입니다.

아직 코딩을 시작하지 않았지만 누군가가 이미이 문제를 해결해야만하기 전에 나 자신에게 구멍을 파고 싶지는 않았습니다.

감사합니다.

답변

1

나는 setInterval을 피합니다. 대신, 나는 같은 패턴의 setTimeout을 사용

function someThing() { 
    // do something ... 
    setTimeout(someThing, 2000); 
    // or do something after setting the timeout ... 
} 

// either delay the start: 
// setTimeout(someThing, 1000); 
// or start right away 
someThing() 

하지만 당신이 정말로 setInterval을 사용하려는 경우 다음과 유사한 패턴이 작동합니다

function someThing(firstTime) { 
    if (firstTime === true) { 
     console.log('setting interval for someThing'); 
     setInterval(someThing, 1000); 
    } 

    console.log('someThing called'); 
} 
someThing(true); 
관련 문제