2
我正在從一個噪聲算法生成模式的JS項目。我產生了多個八度的噪音,以獲得我想要的結果,其結果大約是7,000,000個值。正如你可以想象的那樣,我得到了一個沒有反應的腳本錯誤。JS:防止無響應的腳本警告
- 有沒有辦法在現代瀏覽器中抑制此消息?在這種情況下,腳本正在執行預期的行爲 - 產生噪音 - 預計它會花費一點時間。
- 用服務器端語言生成噪聲並使用AJAX或其他語言傳遞回來會更快嗎?
謝謝!
我正在從一個噪聲算法生成模式的JS項目。我產生了多個八度的噪音,以獲得我想要的結果,其結果大約是7,000,000個值。正如你可以想象的那樣,我得到了一個沒有反應的腳本錯誤。JS:防止無響應的腳本警告
謝謝!
你可以使用webworkers,這看起來是這樣的:
if (window.Worker) {
// load web worker
var thread = new Worker("webworker.js");
// message received from web worker
thread.onmessage = function(e) {
var noise = e.data;
//do something
}
// start web worker
thread.postMessage(7000000);
}
else {
output.textContent = "Web Workers are not supported in your browser";
}
webworker.js:
self.onmessage = function(e) {
var r = e.data;
while (r-- > 0) {
//generate some noise
}
self.postMessage(noise);
};
如果您不想使用webworkers,那麼對於您的生成過程的每個「步驟」,都要用一個小小的延遲將其包裝在setTimeout中。這些延遲會讓瀏覽器有時間做其他事情並保持響應。
將腳本分成更小的「塊」,使用較少的時間完成並使用'setTimeout'在當前的腳本完成後觸發下一個腳本;或者查看_web workers_而不是。 – CBroe 2015-03-18 23:59:13