2017-02-10 8 views
2

이것은 매우 일반적인 문제의 반대 일 수 있습니다. 한 탭에서 setInterval을 사용하고 다른 탭으로 전환하면 간격이 크게 줄어 듭니다. 오디오 타이밍이 느려지는 것을들을 수 있기 때문에 오디오 타이밍에서 매우 눈에.니다.setInterval이 비활성 탭에서 느려지지 않음

하지만 최신 Chrome 56 및 Firefox 51에서는 더 이상 문제가 발생하지 않습니다.

그러나 Chrome에서는 매우 드물지만 무작위로 보이는 경우 전환 표 이 적용됩니다. 또한 웹 작업자를 어떤 이유로 든 억제합니다.

매우 정확한 타이밍을 요구하는 웹 오디오 API를 작성하고 있기 때문에 두려움이 생기기 때문에 자체 스레드에서 실행해야하는 setInterval과 Web Workers 간의 차이점을 확인할 수 없습니다.

setInterval이 비활성 탭에 익숙하지 않은 이유는 무엇입니까?

업데이트 : BLOB URI를 통해로드 된 웹 작업자의 setInterval조차도 탭 전환과 같은 일부 경우에 제한을받습니다.

답변

1

javascript는 런타임 컴파일 코드이므로 (런타임에 브라우저로 컴파일 됨, 브라우저가 브라우저에서 작동해야 함). 다른 탭으로 이동하면 페이지에 자체 스크립트가 있고 브라우저는 해당 코드도 컴파일해야합니다. 따라서 브라우저는 활성 탭의 스크립트에 높은 우선 순위를 할당하고 나머지 탭의 스크립트는 낮은 우선 순위로 할당합니다. 따라서 비활성 탭의 스크립트에 영향을 미칩니다. 그러나 더 많은 양의 RAM을 사용할 수있는 컴퓨터가 있으면이 문제가 발생하지 않습니다.

+0

낮은 RAM 또는 CPU 또는 기타 매개 변수를 시뮬레이트하여 안정적인'setInterval' 조절 동작 **을 트리거하는 방법이 있습니까? Web Workers를 사용하는 것이 바닐라'setInterval' 또는 다른'setTimeout'과 관련된 솔루션보다 시간상 이점이 있는지를 실제로 판단 할 수 있어야합니다. – bryc