私は、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. 優先度キューで優先度を設定する方法
- 2. テーブルに優先度を設定する方法は?
- 3. Slurmジョブに最大優先度を設定する方法は?
- 4. kubernetesジョブオブジェクトに優先度を設定する方法
- 5. スカラの優先順位が低く優先度が低い
- 6. Git Towerホットキー(低優先度)
- 7. 低優先度Express.js app.get( '/ route');
- 8. VxWorksで低優先度タスクを実行する方法
- 9. サイトの画像の読み込み優先度を設定する方法はありますか?
- 10. ライブラリーの優先度を設定する
- 11. AsyncTask優先度を設定する
- 12. MemSqlでクエリの優先度を設定する方法
- 13. Azure Notification HubでGCM優先度を設定する方法
- 14. s3アップロードで優先度を設定する方法
- 15. 優先度設定のスレッド
- 16. memcachedに優先度を設定するオプションはありますか? (Expiryに似ています)
- 17. iPhoneでいくつかのレイヤの優先度を設定する方法は?
- 18. Android/JavaでLinuxコマンドを低優先度で実行する方法は?
- 19. ActiveJobには特定の優先度を持つキューがありますか?
- 20. ロケーションサービスGPS、高優先度を設定
- 21. AngularJS Controllerでイベントの優先度を指定する方法は?
- 22. 共有優先度の値を保存してスピナーに設定する方法
- 23. Windows IOTの起動時にバックグラウンドプロセスの優先度を設定する方法
- 24. メインスレッドで優先度の低いタスクをスケジュールします
- 25. perfomSelector:withObject:afterDelay:私は低い優先度を求めることができますか?
- 26. メインスレッドの優先度を設定することはできますか?
- 27. Windows(Vista):プログラムのショートカットにプロセス優先度を設定する
- 28. クエリの行に優先度基準を設定する
- 29. QtのGUIスレッドに優先度を設定する
- 30. CloudFormationテンプレートでSTEP(AWS :: EMR :: Step)優先度を設定する方法
どのプラットフォームと言語でですか? – rene
ウェブワーカーをどのようなタスクで使用する予定ですか?定期的な活動ですか? 1回のタスクの実行? – Tudor
@ Tudor一度実行するといいでしょう(たとえば、ユーザーが写真をアップロードし、ワーカーがPhotoshopのようなフィルタを適用します。かなりCPUを消費し、ワーカーはメインスレッドに警告します)。 – tunnuz