Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 自动执行指定可变时间段的功能_Javascript_Timeout_Settimeout - Fatal编程技术网

Javascript 自动执行指定可变时间段的功能

Javascript 自动执行指定可变时间段的功能,javascript,timeout,settimeout,Javascript,Timeout,Settimeout,我有一个函数,它将在指定的时间值内执行。我使用了set interval函数,但是我需要一个从数据库中获取的可变时间作为超时时间。 在getInactiveTimePeriod中,我从浏览器本地存储获取时间,并作为Api调用的结果存储。 时间按预期以毫秒为单位。 我的代码如下 <script> var timeInMilliseconds; window.setInterval(function() { getInactiveTimePeriod(); } , 100

我有一个函数,它将在指定的时间值内执行。我使用了set interval函数,但是我需要一个从数据库中获取的可变时间作为超时时间。 在getInactiveTimePeriod中,我从浏览器本地存储获取时间,并作为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>

var timeinms;
setInterval(函数(){
GetInactivateTimePeriod();
} , 10000);
函数getInactivateTimePeriod(){
chrome.storage.local.get(“用户非活动时间”,函数(obj){
var timeInMinuts=对象用户非活动时间;
timeinmillizes=timeinminutes*(60000);
});
}
GetInactivateTimePeriod();
checkUserInactivity();
函数checkUserInactivity(){
setTimeout(函数(){
//代码
},时间单位为毫秒);
}
checkUserInactivity();

在这种情况下,该函数只工作一次。请帮我解决这个问题。

首先,您应该从数据库接收您的值,然后继续使用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>

window.setInterval(()=>{
getInactiveTimePeriod();//此函数将每10秒运行一次
}, 10000);
函数getInactivateTimePeriod(){
var timeinmillizes=$variable;//从数据库获取的时间值
//将箭头函数用于一个范围
setTimeout(()=>{
//代码
},timeinmillizes);//代码执行将根据timeinmillizes延迟
}

我相信它应该会有帮助。

$variable
未定义。“从数据库获取”是什么意思?在哪里以及如何提取?您能显示相关代码吗?这根本无法解释如何定义
$variable
::可能这就是当前的问题所在,下面是此代码的作用:1。创建一个间隔,该间隔每隔10000ms将相同的未定义值($variable)分配给相同的变量(TimeinMillions)。2.将未定义的值($variable)分配给TimeIn毫秒(然后每10000ms一次)。3.执行两次checkUserInactivity(),设置超时,这意味着您启动并执行两次超时。一句话:我不知道你想做什么:)事实上,我从数据库中获取了一个时间,存储在浏览器存储中,并且每10000毫秒获取一个可变时间单位毫秒。它可能是25000,或26000等。我希望在该时间间隔内执行checkUserInactivity pblm是,TimeinMillics根据db中的值而变化。很抱歉,我有疑问。在这种情况下,函数getInactivateTimePeriod()将每10000毫秒运行一次。我在checkUserInactivity中有一个很大的代码,它将在其他时间间隔可能是250000毫秒的情况下执行。当我按照您的建议在getInactiveTimePeriod()中编写这段代码时,所有这些都是在10000毫秒内完成的。