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