我创建了一个有N个时间做某事的用户数组。时间结束后,它们将从用户数组中删除。但是,我不认为这是一种合法的做法,任何帮助? 编辑:每个用户都有独立的时间。
var allowedUsers = [];
allowedUsers.push(
setInterval(function(name){
this.name = name;
}, 5, function(){
allowedUsers.splice(allowedUsers.indexOf(name),1);
client.action(channel, "Times up! " + name);
})
);

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
答案 0 :(得分:0)
为每个用户创建一个对象或赋值为allowed
。我将创建一个数组并使其第一个索引的值等于一个字符串。
var allowed = "allowed";
var notallowed = "notallowed";
var user1 = [allowed, ....]; //other elements there
var user2 = [allowed, ....];
function userAction(user){
while(user[0] == allowed){
// code here
}
setTimeout(noAllow(user), 10000);
}
function noAllow(user){
user[0] = notallowed;
}
答案 1 :(得分:0)
这是我的建议,一个简单的案例。
创建用户数组,并且它们是时间片。
let users = [{id:1, timeSliceInSeconds:5}, {id:2, timeSliceInSeconds:1}, ...]
在程序开头使用Date.prototype.getTime()
let startTime = new Date().getTime(); //time since 1970 in ms.
如果需要,可以使用setTimeout 1秒或更短时间,每隔Xs或Xms循环一次数组。然后再次召唤自己。
function check(){
let elapsedTimeInSeconds = ((new Date()).getTime() - startTime)/1000, tempArray = [];
users.forEach(function(user){
if(elapsedTimeInSeconds < user.timeSliceInSeconds){
tempArray.push(user);
}
});
users = tempArray;
if(users.length()){
setTimeout(check, 1000);
}
}
check();
或者根据需要进行数组修改。也许只是将它们标记为非活动状态并跳过不活动状态。