выполнять функцию в течение указанного переменного времени peroid автоматически - PullRequest
0 голосов
/ 04 марта 2020

У меня есть функция, которая должна выполняться в течение определенного времени. Я использовал функцию установки интервала, но мне нужно переменное время, которое выбирается из базы данных в качестве периода ожидания. В getInactiveTimePeriod iam получает время из локального хранилища браузера и сохраняется в результате вызова Api. время идет во времени в миллисекундах, как и ожидалось. мой код выглядит следующим образом.

<script>
var timeInMilliseconds;
window.setInterval(function() {
       getInactiveTimePeriod();
 } , 10000);

 function getInactiveTimePeriod() {
  chrome.storage.local.get("user_inactive_time", function (obj) {
     var timeInMinuts = obj.user_inactive_time;
     timeInMilliseconds = timeInMinuts *(60000);

});
 }
 getInactiveTimePeriod();
 checkUserInactivity();

 function checkUserInactivity() {
    setTimeout(function () {
       // code
   }, timeInMilliseconds);
 }
 checkUserInactivity();
</script>

, при этом функция работает только один раз. Пожалуйста, помогите мне решить эту проблему.

1 Ответ

0 голосов
/ 04 марта 2020

Прежде всего, вы должны получить свое значение из базы данных, а затем перейти к функции setTimeout. Это можно сделать следующим образом:

<script>
window.setInterval(() => {
    getInactiveTimePeriod(); //every 10 seconds this function will be run
}, 10000);

function getInactiveTimePeriod() {
    var timeInMilliseconds = $variable; // time value fetched from database
    //use arrow functions to be in one scope
    setTimeout(() => { 
        // code
    }, timeInMilliseconds); //code execution will be delayed according to timeInMilliseconds
}
</script>

Я считаю, что это должно помочь

...