mirror of
https://github.com/netbymatt/ws4kp.git
synced 2026-04-17 09:09:30 -07:00
reorganize for build system
This commit is contained in:
94
server/scripts/timer.js
Normal file
94
server/scripts/timer.js
Normal file
@@ -0,0 +1,94 @@
|
||||
if (window.Worker)
|
||||
{
|
||||
var _TimerWorkCallBacks = [];
|
||||
var _TimerIds = 0;
|
||||
|
||||
var _TimerWorker = new window.Worker("scripts/TimerWorker.js");
|
||||
_TimerWorker.onmessage = function (e)
|
||||
{
|
||||
var Message = e.data;
|
||||
|
||||
switch (Message.Action)
|
||||
{
|
||||
case "ELASPED":
|
||||
var TimerWorkCallBack = _TimerWorkCallBacks[Message.Id];
|
||||
|
||||
if (!TimerWorkCallBack)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var Window = TimerWorkCallBack.Window;
|
||||
var CallBack = TimerWorkCallBack.CallBack;
|
||||
var Arguments = TimerWorkCallBack.Arguments;
|
||||
|
||||
if (typeof (CallBack) === 'string')
|
||||
{
|
||||
CallBack = new Function(CallBack);
|
||||
}
|
||||
if (typeof (CallBack) === 'function')
|
||||
{
|
||||
CallBack.apply(Window, Arguments);
|
||||
}
|
||||
|
||||
if (Message.RunOnce == true)
|
||||
{
|
||||
_clearIntervalWorker(Message.Id);
|
||||
}
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
window.setIntervalWorker = function (CallBack, TimeOut, Arguments)
|
||||
{
|
||||
Arguments = Array.prototype.slice.call(arguments).slice(2);
|
||||
return _setIntervalWorker(false, CallBack, TimeOut, Arguments, window);
|
||||
};
|
||||
window.setTimeoutWorker = function (CallBack, TimeOut, Arguments)
|
||||
{
|
||||
Arguments = Array.prototype.slice.call(arguments).slice(2);
|
||||
return _setIntervalWorker(true, CallBack, TimeOut, Arguments, window);
|
||||
};
|
||||
var _setIntervalWorker = function (RunOnce, CallBack, TimeOut, Arguments, Window)
|
||||
{
|
||||
var Id = ++_TimerIds;
|
||||
|
||||
_TimerWorkCallBacks[Id] = {
|
||||
CallBack: CallBack,
|
||||
Arguments: Arguments,
|
||||
Window: Window,
|
||||
};
|
||||
|
||||
_TimerWorker.postMessage({
|
||||
Action: "START",
|
||||
RunOnce: RunOnce,
|
||||
Id: Id,
|
||||
TimeOut: TimeOut,
|
||||
});
|
||||
|
||||
return Id;
|
||||
};
|
||||
|
||||
window.clearIntervalWorker = function (Id)
|
||||
{
|
||||
_clearIntervalWorker(Id);
|
||||
};
|
||||
window.clearTimeoutWorker = function (Id)
|
||||
{
|
||||
_clearIntervalWorker(Id);
|
||||
};
|
||||
var _clearIntervalWorker = function (Id)
|
||||
{
|
||||
if (!Id)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_TimerWorker.postMessage({
|
||||
Action: "STOP",
|
||||
Id: Id,
|
||||
});
|
||||
|
||||
delete _TimerWorkCallBacks[Id];
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user