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 с небольшой задержкой. Эти задержки дадут браузеру время делать другие вещи и оставаться отзывчивыми.

Другие вопросы по тегам