2017-02-10 36 views
2

これはおそらく非常に一般的な問題の反対です。あるタブでsetIntervalを使用して別のタブに切り替えると、間隔が大幅に減少します(スローダウン)。これは、あなたがそれが遅くなって聞くことができるので、オーディオのタイミングで非常に顕著です。setIntervalが非アクティブなタブで減速しない

しかし、最新のChrome 56とFirefox 51では、私はもうそれを起こすことはできません。

しかし、Chromeでは非常にまれで、一見無作為に、タブを切り替えるにはが有効です。何らかの理由でWeb Workersを抑制することさえあります。

これは、非常に正確なタイミングを必要とするWeb Audio APIを作成しようとしているために頭痛を引き起こしています。また、独自のスレッドで実行する必要があるsetIntervalとWeb Workersの違いもわかりません。

setIntervalは、非アクティブなタブに慣れていて、それを抑制していないのはなぜですか?

更新:Blob URI経由で読み込まれたWebワーカー内のsetIntervalでも、タブを切り替えるなど、場合によっては抑制されます。

答えて

1

javascriptは実行時コンパイルコードです(実行時にブラウザでコンパイルされるため、ブラウザで作業する必要があります)。他のタブに移動すると、ページには独自のスクリプトがあり、ブラウザはそのコードもコンパイルする必要があります。したがって、ブラウザはアクティブなタブのスクリプトに高い優先度を割り当て、残りのタブのスクリプトには低い優先度を割り当てます。したがって、非アクティブなタブのスクリプトに影響します。しかし、使用可能なRAMの量が多いマシンを使用している場合、この問題は発生しません。

+0

低RAMまたはCPU、または信頼できる 'setInterval'スロットリング動作**をトリガーする他のパラメータをシミュレートする方法はありますか?ウェブワーカーを使用する場合、バニラのsetIntervalや他のsetTimeout関連のソリューションに比べてタイミング上の利点があるかどうかを実際に判断できる必要があります。 – bryc

関連する問題