【问题标题】:set variable different time interval in set interval在设置的间隔中设置变量不同的时间间隔
【发布时间】:2020-06-21 01:32:11
【问题描述】:

我有一个名为 checkInactivity 的函数,我想在可变时间间隔内执行此函数。我正在获取时间间隔 getInactiveTimePeriod 并以可变 timeInMilliseconds 进行处理。这个变量(timeInMilliseconds)在每次从数据库中选择一个值时都保存不同的时间。我想用这个可变的时间间隔运行函数 checkInactivity,即取决于 timeInMilliseconds 的值。 请帮我解决这个问题。提前谢谢你。

window.setInterval(function() {
    setInactiveMode();
    setInactiveTimePeriod();
    getInactiveTimePeriod();
 } , 100000);

 var applicationsopend = [];
 var applicationTabId = {};
 var timeInseconds;

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

    });
 }

// getInactiveTimePeriod();

 function checkInactivity() {
    chrome.storage.local.get("user_inactive_mode", function (obj) {
        inactiveStatusMode = obj.user_inactive_mode;
        if(inactiveStatusMode == 'true') {
            var timeInseconds = timeInMilliseconds / 1000;
            chrome.idle.queryState(timeInseconds, function (state) {
                if (state === "active") {
                    chrome.storage.local.get( "appList", function (obj) {
                        appList = obj.appList.split(",");
                        var queryInfo = {
                            // active: false,
                        currentWindow: false
                        };
                        chrome.tabs.query(queryInfo, function (tabs) {
                            for (var i = 0; i < tabs.length; i++) {
                                var taburl = tabs[i]['url'];
                                currentApp = findApp(taburl);
                                currentHashUrl = CryptoJS.SHA1(currentApp).toString(CryptoJS.enc.Hex);
                                if($.inArray(currentHashUrl, appList) != -1 && currentApp != 'onionid' ) {
                                    var tabid = tabs[i]['id'];
                                    currentApp = findApp(taburl);
                                    applicationTabId[currentApp] = tabid;
                                }
                            }
                            //console.log(applicationTabId);
                            getapplicationlogouturl(applicationTabId);
                        });
                    }); 
                }
            });  
        }
    });
 }

【问题讨论】:

    标签: javascript timeout setinterval


    【解决方案1】:

    一旦您检索到要用于间隔的时间,请使用setInterval() 在给定的毫秒内无限期地调用该函数:

    function getInactiveTimePeriod() {
        chrome.storage.local.get("user_inactive_time", function (obj) {
            let timeInMinutes = obj.user_inactive_time;
            let timeInMilliseconds = timeInMinutes * (60000);
            setInterval(() => {
                checkInactivity();
            }, timeInMilliseconds);
        });
    }
    

    注意,如果你想在其他地方使用这个值,应该在更高的范围内声明它:

    // global declaration
    var timeInMilliseconds;
    
    function getInactiveTimePeriod() {
        chrome.storage.local.get("user_inactive_time", function (obj) {
            let timeInMinutes = obj.user_inactive_time;
            timeInMilliseconds = timeInMinutes * (60000); // setting the globally declared variable
            setInterval(() => {
                checkInactivity();
            }, timeInMilliseconds);
        });
    }
    
    function checkInactivity() {
        var timeInseconds = timeInMilliseconds / 1000; // use the globally declared variable
    
        // ...
    }
    

    【讨论】:

    • getInactiveTimePeriod() 函数在 100000 毫秒内工作 checkInactivity 也在此间隔内工作,无论 timeInMilliseconds。我添加了 console.log('jkdfkjhf' + time);检查状态并作为 jkdfkjhf15:44:0 下一个 jkdfkjhf15:45:40 即在 100000 毫秒内工作
    • 您确定从chrome.storage 检索到正确的值吗?如果您在getInactiveTimePeriod 中执行console.log(obj),您会得到什么输出?
    • 我把它设为 180000
    • 如果你在obj中得到180000,你应该使用它来设置timeInMinutes,而不是obj.user_inactive_time
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-26
    • 2023-01-12
    • 2023-03-11
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多