2014-05-29 2 views
1

У меня есть фоновый скрипт, который использует команду setInterval для выполнения сетевого запроса на регулярной основе.Расширение Chrome: проверьте, работает ли фоновый скрипт

Мне было интересно, может ли фоновый скрипт обнаруживать, что os переходит в спящий или ждущий режим, так что я могу настроить таймер, отображаемый при возобновлении сценария фона. Я понимаю, что setInterval таймер приостанавливается во время сна на основе этой Ответ: What happens to setTimeout when the computer goes to sleep?

образец кода background.js

set_start_time(); 
    search_set_int = setInterval(function() { 

    foo(); 

    // Set the Auto Search Start time for the next run 
    set_start_time(); 
}, frequency); // Set interval function 


var total_time_left_sec = (frequency/1000) - (current_time_unix - start_time_unix) 

Благодаря

+0

Возможно, хорошим решением для вашего случая является уменьшение интервала до небольшого количества (например, 1000 мс) и отправлять частые обновления на справочную страницу с оставшимся временем. Например. '// делать работу каждые 60 секунд var осталосьTime = 60; setInterval (функция() {если (--remainedTime <= 0) {Foo(); remainedTime = 60;} chrome.extension.sendMessage ({remainedTime: remainedTime}); }, 1000); ' – Andrey

+0

Благодаря для комментария. Я использую это решение, так как он прост, я думаю, что вопрос Зиг Мандель об использовании setInterval tick для вычисления точного времени истек, является проблемой, хотя я этого не видел. – user2738707

ответ

1

Держите локальную переменную с меткой времени последнего интервала пробега , В обычном режиме (без сна) отметка времени будет примерно в данный момент, но во сне она будет старше, поэтому вы знаете, что вы из сна. Также не полагайтесь на интервал как ваш «галочка» для вычисления прошедшего времени Вместо этого помните стартовую временную метку и выдержку с этого момента()

+0

Спасибо за идею. Таймер обновляется каждую секунду, поскольку это всего лишь часы. 1. Мне нужно будет хранить последнюю временную метку каждую секунду 2. Повторить последнюю отметку времени и возобновить вычисление задержки между отметкой «Сегодня» и «Последний раз» и настроить таймер в соответствии с «задержкой» – user2738707

+0

Да. Для более изощренности, когда вы обнаруживаете сон, отрегулируйте свой интервал так, чтобы он появился в нужный момент, когда период сдвинулся –

Смежные вопросы