Reputation: 2350
I'm working on a JS project that generates a pattern from a noise algorithm. I'm generating multiple octaves of noise to get the result I want which ends up being around 7,000,000 values. As you can imagine, I'm getting an unresponsive script error from this.
Thanks!
Upvotes: 3
Views: 1103
Reputation: 64677
You could use webworkers, which would look something like:
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);
};
If you don't want to use webworkers, for each "step" of your generation process, wrap it in a setTimeout with a small delay. These delays will give the browser time do other stuff and stay responsive.
Upvotes: 2