Что происходит с веб-рабочим потоком HTML5, когда вкладка закрыта во время работы? - PullRequest
16 голосов
/ 16 января 2012

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

Ответы [ 2 ]

12 голосов
/ 16 января 2012

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

Таким образом, с общими сотрудниками вы можете «передать» право собственности, открыв новое окно, которое устанавливает свое собственное соединение с работником (с помощью new SharedWorker(...)), а затем закройте старое окно. Но одно окно всегда должно оставаться открытым.

4 голосов
/ 16 января 2012

Взгляните сюда

http://www.whatwg.org/specs/web-apps/current-work/multipage/workers.html#workerglobalscope

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

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

В случае, если выу вас есть одно окно с использованием веб-работников, и вы закрываете это окно (или вкладку), работник уходит.

Если у вас есть окно, в котором есть окно, открывающее другие окна или вкладки, рабочие могут продолжить,Но если вы закроете все, они все уйдут.

...