JS: Предотвращение неотзывчивых предупреждений сценария
Я работаю над проектом JS, который генерирует шаблон из алгоритма шума. Я генерирую несколько октав шума, чтобы получить желаемый результат, который в итоге составляет около 7 000 000 значений. Как вы можете себе представить, я получаю ошибку сценария из-за этого.
- Есть ли способ подавить это сообщение в современных браузерах? В этом случае сценарий выполняет ожидаемое поведение - генерирует шум - и ожидается, что это займет некоторое время.
- Будет ли быстрее генерировать шум с помощью языка на стороне сервера и передавать его обратно, используя AJAX или что-то еще?
Спасибо!
1 ответ
Вы можете использовать веб-работников, которые будут выглядеть примерно так:
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 с небольшой задержкой. Эти задержки дадут браузеру время делать другие вещи и оставаться отзывчивыми.