0
我必須在nodejs中創建一個定時應用程序,用戶可以設置每日,每週和每月。我的第一個因子評分是創造這樣的:nodejs計時器性能
socket.on("connect")
{
client.on("authenticate")
{
var frequency = GetTimersForUser(client);
var timersInMilliseconds = ConvertFrequencyToMS(frequency);
var nextInMS = GetLower(timersInMilliseconds);
setTimeout("timedCount()",nextInMS);
}
}
timedCount()
{
cancelTimer;
client.emit("poke");
var frequency = GetTimersForUsers(client);
...
setTimeout("timedCount()",nextInMS);
}
,但是這不會提醒我關於失敗的定時器(如果客戶端斷開連接),因爲計時器連接後才創建的,所以我雖然有關創建定時器,前連接。那麼,是不是更快地創建1個定時器每秒:
userslist = getIndividualUsersNextTimerAsDate();
setTimout("timedCount()",1000);
timedCount()
{
foreach(user in userslist)
{
if(user.time <= now())
{
if(user.socket)
{
user.socket.emit("poke");
}
user.time = resetTimeForNextTimer(user);
}
}
}
socket.on("connect")
{
...
userslist[x].socket = client;
}
或多個計時器每一個「時間」:
var userslist = GetUsersTimers();
foreach(user in userslist)
{
user.Counter = setTimeout("runTime()",client.timer);
}
runTime(client)
{
client.emit("poke");
client.Counter.cancel();
client.timer = resetToNextTimer();
client.Counter = setTimeout("runTime()",client.timer);
}
還是有我就是缺少什麼更好的辦法?