Что произойдет с веб-рабочим, если я закрою страницу, созданную этим веб-рабочим?

Предположим, у меня есть страница Main.html, которая создает веб-рабочего. Если я закрою главную страницу, изменив window.location, прекратит ли веб-рабочий или будет ли веб-рабочий все еще работать?

Как Firefox или Chrome предпочитают «обрабатывать длительные рабочие задачи после закрытия страницы»? Если задача работника – отправить очень быстрый запрос POST, в этом случае браузер немедленно прекратит работу после закрытия страницы, или браузер разрешит работнику завершить свой запрос POST?

  • Работают ли веб-рабочие в одной перезагрузке страницы, навигации по ссылкам
  • Доступ к IndexedDB из нескольких потоков javascript
  • Запросы Node.js и CPU
  • DOM-подобные API для содержимого строки HTML внутри веб-рабочего
  • Ограничен ли рабочий стол Firefox?
  • Почему поддержка веб-рабочих HTML5 была удалена из браузера Android в версиях 2.2 и выше?
  • Поскольку JavaScript является однопоточным, как веб-рабочие в HTML5 выполняют многопоточность?
  • Uncaught ReferenceError: importScripts не определен
  • One Solution collect form web for “Что произойдет с веб-рабочим, если я закрою страницу, созданную этим веб-рабочим?”

    Закрытие или переход от страницы заставляет браузер отказаться от документа страницы :

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

    Спецификация W3C Worker говорит, что у Рабочего есть «список Document s». Для рабочих, созданных веб-страницей с window (т. Е. Не рабочим), список состоит из одного Document страницы, породившего его. Спекуляция гласит:

    Всякий раз, когда объект Document отбрасывается, его необходимо удалить из списка рабочих Documents каждого работника, чей список содержит этот Документ.

    А также что:

    Работник считается допустимым работником, если его рабочий Document не пуст.

    Это определение используется позже:

    Закрытие сиротских работников: начните контролировать работника таким образом, чтобы … не позднее, чем он переставал быть допустимым рабочим, флаг закрытия рабочей области рабочего объекта равен true.

    Наконец, «флаг закрытия» предотвращает новую активность для рабочего:

    Как только флаг закрытия WorkerGlobalScope установлен в true, очереди задач цикла событий должны отбросить любые дополнительные задачи, которые будут добавлены к ним (задачи, уже находящиеся в очереди, не затрагиваются, кроме случаев, когда указано иное). Эффективно, как только флаг закрытия верен, таймеры прекращают стрельбу, удаляются уведомления для всех ожидающих асинхронных операций и т. Д.

    Любой старый, давно работающий вид активности может быть остановлен браузером, но не обязательно:

    Пользовательские агенты могут ссылаться на модель обработки «убить рабочего» на рабочем месте в любое время, например, в ответ на запросы пользователя, в ответ на управление квотами ЦП или когда рабочий перестает быть активным необходимым работником, если рабочий продолжает выполнение даже после Его флаг закрытия был установлен в true.

    Таким образом, спецификация W3C позволяет работнику продолжать работать, но не позволяет ему обрабатывать дальнейшие события (рабочие сообщения, таймеры, обратные вызовы в сети и т. Д.). Определенный браузер может в любой момент убить работника по соображениям производительности. Способ, которым каждый браузер предпочитает обрабатывать длительные рабочие задачи после закрытия страницы, выходит за рамки спецификации; Он определяется реализацией. Вы не должны зависеть от этого поведения так или иначе: вы должны терпеть немедленное прекращение, а также терпеть любые длительные задачи, которые не сразу заканчиваются закрытием страницы.

    Общие работники подчиняются тем же правилам, за исключением того, что их список Document содержит все используемые в настоящее время Documents , поэтому их флаг закрытия устанавливается только после закрытия всех Documents .

    JavaScript делает сайт умным, красочным и простым использованием.