JavaScript-эквивалент SwingUtilities.invokeLater()

Есть ли эквивалент Java invokeLater() метод SwingUtilities в JavaScript

ОБНОВЛЕНИЕ 1

Так будет setTimeout() с нулевой задержкой сделать точно так же, как invokeLater()?

2 ответа

Решение
  1. Если вы хотите запустить что-то асинхронно (позже), попробуйте setTimeout()

  2. JavaScript является однопоточным. Если вы хотите запустить какое-то трудоемкое (ресурсоемкое) задание вне обработчика событий, вы можете сделать это, используя описанную выше технику, однако она все равно будет потреблять поток обработки событий (вызывая зависание вашего пользовательского интерфейса).

Обычно плохая идея запускать задачи с интенсивным использованием ЦП в браузере ( веб-работники могут изменить это), поскольку они используют тот же поток, что и обработчики событий, что заставляет их ждать.

Смотрите также

Пытался setTimeout, пользовательский интерфейс создавал впечатление, что он работает, но почему-то это заняло много времени. Что-то вроде этого:

      for (...) {
    setTimeout(function() {
        // show a loading icon
        // AJAX call
        // heavy DOM manipulation
    });
}

Пытался Promise. результат был просто лучше и быстрее. Итак, код теперь такой:

      for (...) {
    var promise = new Promise(function() {
        // show a loading icon
        // AJAX call
        // heavy DOM manipulation
    });
}
Другие вопросы по тегам