我正在考慮在用戶瀏覽我的網站時使用Web Workers來提供一些後臺功能(這是Web Workers的用途,對吧?)。但是,我不想冒着通過導致滯後滾動,無響應的控制等來損害用戶體驗的風險.Web Worker被映射到操作系統線程,因此,我期望對這些線程的優先級進行一些控制,但是到目前爲止據我所知,目前的API中沒有這樣的東西。你知道如何做到這一點?即使有黑客?有沒有辦法將Web Worker設置爲低優先級?
17
A
回答
11
那麼,沒有API調用來控制像這樣的低級細節。不過,我認爲你應該首先實現你想要做的事情,然後測試一下用戶體驗中的性能影響是否太大。我假設由於他們沒有對線程的執行方式進行良好控制,他們可能很好地被底層實現管理。
9
即使有黑客? [...] 用戶上傳的照片和工作人員將一個Photoshop樣 過濾器給它,這是非常CPU密集型,那麼工人提醒 主線程
這裏是一個黑客。
減慢你的代碼。像這樣的東西是什麼,我現在使用的粒子模擬:
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. 有沒有辦法設置圖片在網站上的加載優先級?
- 2. 有沒有辦法設置SwingWorker使用的後臺線程的優先級?
- 3. Android有沒有辦法在adb中顯示進程優先級?
- 4. 將優先級設置爲NSOperationQueue
- 5. 使exe優先級低
- 6. AsyncTask設置優先級
- 7. Firebase iOS設置優先級沒有更新查詢
- 8. 有沒有辦法強制gcc/g ++中的函數解析優先級?
- 9. 設置優先級導致
- 10. Flex iframe設置優先級?
- 11. 在HTML事件中設置優先級
- 12. 如何在ADL期間將函數模板設置爲最低優先級?
- 13. 有沒有辦法將System.Windows.Controls.SplashScreen設置爲System.Windows.Window
- 14. 有沒有辦法將默認值設置爲「00:00」?
- 15. 有沒有辦法以編程方式將ApartmentState設置爲STA?
- 16. 有沒有辦法將GridViewColumn的寬度設置爲Auto?
- 17. 有沒有辦法將heroku應用設置爲私密?
- 18. XNA:有沒有辦法將RasterizerState設置爲WireFrame一次?
- 19. 有沒有辦法在Android中將Drawable設置爲int
- 20. 有沒有辦法做ASP.NET低級別的PostBacks調試
- 21. 有沒有辦法從persistent-mongoDB使用低級mongoDB後端?
- 22. 降低Task.Factory.StartNew線程的優先級
- 23. 有沒有辦法來設置開發
- 24. 有沒有辦法設置HttpResponse?
- 25. 有沒有辦法恢復VS2010設置?
- 26. 發佈低優先級更新
- 27. 在CSS中z-index沒有優先級
- 28. 爲什麼muset將freertos優先級組設置爲group_4?
- 29. 有沒有辦法爲Android設備設置初始方向
- 30. 設置CoreData NSManagedObjectContext線程優先級
什麼平臺和語言? – rene 2012-01-01 17:41:03
你打算使用網絡工作者進行什麼樣的任務?定期活動?一次性執行任務? – Tudor 2012-01-01 18:31:20
@Tudor我會說一次性執行(例如,用戶上傳一張照片,工作人員使用類似Photoshop的過濾器,這非常耗費CPU時間,然後工作人員會提醒主線程)。 – tunnuz 2012-01-02 07:46:06