私は、Web Workersを使用して、ユーザーが自分のWebサイトをブラウズしている間に、いくつかのバックグラウンド機能を提供することを考えています。しかし、私は遅いスクロール、応答の遅いコントロールなどを引き起こすことによってユーザーエクスペリエンスを傷つける危険を冒すことはしません.WebワーカーはOSスレッドにマップされています。したがって、これらのスレッドの優先順位については、私が知っているように、現在のAPIにはそのようなものはありません。あなたはこれを達成する方法を知っていますか?ハックでも?Webワーカーを低優先度に設定する方法はありますか?
17
A
答えて
11
このような低レベルの詳細を制御するAPI呼び出しはありません。しかし、私はあなたが最初にやりたいことを実装してから、パフォーマンスのヒットがユーザーエクスペリエンスの面で大きすぎるかどうかをテストする必要があると思います。私は、スレッドの実行方法を細かく制御することはできないため、基本的な実装によってうまく管理されていると想定しています。
9
ハックでも? [...] ユーザーが写真をアップロードし、労働者はかなりCPU集中型であることにPhotoshopのような フィルタを適用し、その後、作業員は はここでハックのメインスレッド
警告します。
コードをスローダウンします。
var TIME_STEP = 10,
paused = false,
state; // set by commands.start()
function main_loop() {
if (paused) {
return;
}
// update state incrementally. Break your process into chunks
// for example pixels or rows of pixels
state = ____________;
// send state or progress to main thread
if (finished) {
self.postMessage(state);
} else {
self.postMessage(progress);
}
setTimeout(main_loop, TIME_STEP);
}
var commands = {
//...functions that can be called from main thread (pause/start/cancel/etc)...
};
function message_handler (event) {
var data = event.data;
var command = commands[data.command];
command.apply(this, data.args);
}
self.addEventListener('message', message_handler, false);
TIME_STEP
は計算の間の時間であり、あなたは何をしているかによって、どのように長い間、あなたはそれが時間です増加する余裕があるの異なるものにする必要があります。このような何かが、私は現在、粒子シミュレーションのために使用していますものです。このようにすることの良い点の1つは、反復の間に一時停止とキャンセルの要求を受け入れることができることです。
関連する問題
- 1. 低優先度Express.js app.get( '/ route');
- 2. Git Towerホットキー(低優先度)
- 3. VxWorksで低優先度タスクを実行する方法
- 4. ライブラリーの優先度を設定する
- 5. 優先度設定のスレッド
- 6. サイトの画像の読み込み優先度を設定する方法はありますか?
- 7. iPhoneでいくつかのレイヤの優先度を設定する方法は?
- 8. memcachedに優先度を設定するオプションはありますか? (Expiryに似ています)
- 9. Android/JavaでLinuxコマンドを低優先度で実行する方法は?
- 10. ActiveJobには特定の優先度を持つキューがありますか?
- 11. ロケーションサービスGPS、高優先度を設定
- 12. メインスレッドで優先度の低いタスクをスケジュールします
- 13. QtのGUIスレッドに優先度を設定する
- 14. Windows(Vista):プログラムのショートカットにプロセス優先度を設定する
- 15. perfomSelector:withObject:afterDelay:私は低い優先度を求めることができますか?
- 16. メインスレッドの優先度を設定することはできますか?
- 17. 常に優先度の低いスレッドに制御を与える
- 18. 優先度の低いバックグラウンドスレッドを実現するためのパターン?
- 19. スレッドでスレッドの優先度を低くする
- 20. 通常の優先順位プロセスで、単一スレッドの優先度を15以上に設定できますか?
- 21. IISのアプリケーションプールの優先度を設定する
- 22. PL/pgSQLストアドプロシージャのプロセッサ優先度を設定する
- 23. jQuery - Ajaxハンドラの優先度を設定する
- 24. Windows 7でネットワークアダプタのメトリックの優先度を設定する
- 25. スパーク設定優先
- 26. SQL:特定の属性に優先順位を設定する方法は?
- 27. スカラ、より低い優先順位でインポートしますか?
- 28. 共有優先設定でトップハイスコアを保存する方法
- 29. JDBCを使用したMySQLの低優先度アップデート - 動作確認方法
- 30. 優先度ツリーは、vがuの子であるときはいつでも優先度(u)≥優先度(v)であるバイナリツリーです。
どのプラットフォームと言語でですか? – rene
ウェブワーカーをどのようなタスクで使用する予定ですか?定期的な活動ですか? 1回のタスクの実行? – Tudor
@ Tudor一度実行するといいでしょう(たとえば、ユーザーが写真をアップロードし、ワーカーがPhotoshopのようなフィルタを適用します。かなりCPUを消費し、ワーカーはメインスレッドに警告します)。 – tunnuz