[英]Multiple updates during one function call in JavaScript
我正在嘗試編寫一些腳本執行相當繁重的計算。 因此,我想通過更新網站上的內容(例如,完成計算的一小部分)來通知用戶進度。 是否可以用JavaScript實現? JavaScript是否允許在調用函數仍在運行時更新內容? 或者也許無論在什么情況下我都可以在調用函數完成后更新內容?
看一看工人: http : //www.html5rocks.com/en/tutorials/workers/basics/
它用於繁重的計算(在javascript規模的c),並附帶一些函數來更新用戶有關計算的狀態,它基本上是在JavaScript中的多線程。
當您的函數正在運行時,不會發生任何屏幕更新:UI線程必須像其他任何JS線程一樣爭取它的時間。 你可以通過安排回調來做到這一點:
function f() {
a();
// update now
b();
}
可以改寫為
function f() {
a();
setTimeout(function() {
b();
}, 0);
}
這種方式有效,在a()
, setTimeout
將調度函數的其余部分,然后退出。 這是UI線程現在可以(並且將會)獲取控制權的地方; 完成后,計划的剩余部分將執行。
如果您有適合(非常嚴格的)WebWorker限制的事情,您可以使用它們; 然而,他們無法觸摸UI,因此重繪是沒有意義的(除非你像Antoine所說,並根據WebWorker計算的參數安排更新功能)。
我的幾分錢:
最簡單的解決方法是簡單顯示繁忙動畫的最常用方法。
嘗試將重量級計算代碼分解成碎片並更新進度條。
或者如Antoine建議的那樣,嘗試使用Web Workers 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.