chrome ограничение времени выполнения фонового расширения - PullRequest
1 голос
/ 21 января 2020

Я создаю расширение Chrome, которое выполняет много асинхронной и тяжелой работы в фоновом режиме. Он загружает множество изображений из Интернета, преобразует их, а затем сохраняет их в формате ZIP. Время, необходимое для завершения всего этого, может превышать 1 минуту.

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

Я инициирую работу в фоновом скрипте сообщением из скрипта контента. Кажется, что если я предоставляю обратный вызов 'sendResponse', а в фоновом режиме указывает, что я жду ответа с возвращаемым значением 'true', это работает:

    chrome.runtime.onMessage.addListener( (message, sender, sendResponse) => {
        if (message.action === 'download') {
            downloadAction(data, type).then(r => { 
                console.log('finished');
                sendResponse('success');
            })
        }
        return true;
    })

Когда я не делаю ' не может вернуть 'true', это не так. Так это правильный способ выполнения длинного асин c кода в фоновом режиме, даже если я не заинтересован в ответе? Или это просто обходной путь, который срабатывает?

Кажется, есть предел того, как долго расширение будет работать в фоновом режиме, когда инициируется сообщением без return true; Как насчет инициирования с сигналом тревоги? Кроме того, есть ли предел того, как долго он будет работать, если я укажу, что ожидаю ответа с return true;? Конечно, это не позволит мне бесконечно запускать фоновый скрипт?

...