我正在研究一个从噪声算法生成模式的JS项目。我生成多个八度音程以获得我想要的结果,最终得到大约7,000,000个值。你可以想象,我从这里得到了一个无响应的脚本错误。
谢谢!
答案 0 :(得分:1)
您可以使用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);
};
如果您不想使用网络工作者,请为每个"步骤"你的生成过程,将它包装在一个带有小延迟的setTimeout中。这些延迟将使浏览器有时间做其他事情并保持响应。