插件代码
(function (global) {
function create() {
var DefaultTaskConfig = {
TaskName:"测试任务",
Enable:true,
run:function () {
},
Interval:3 * 60 * 1000,
LastTime:new Date(0),
Done:true //run函数是否正在被执行
}
var TaskList = {};
var RunTask = function () {
for (var n in TaskList) {
if (TaskList[n].Enable && TaskList[n].Done) {
var now = new Date();
if ((now.getTime() - TaskList[n].LastTime.getTime()) >= TaskList[n].Interval) {
TaskList[n].run(TaskList[n]);
TaskList[n].LastTime = now;
}
}
}
}
var start = function () {
RunTask();
setInterval(start, 1000);
};
var addTask = function (taskConfig) {
taskConfig = jQuery.extend({}, DefaultTaskConfig, taskConfig);
TaskList[taskConfig.TaskName] = taskConfig;
}
return {start:start, addTask:addTask};
}
function init() {
GfTaskManage.create = create;
}
if (global.GfTaskManage) {
throw new Error("There's already a GfTaskAutoRunManage root here, please load the component only once.");
}
var GfTaskManage = global.GfTaskManage = {};
init();
})(window);
调用的地方
var SendHeartBeat = {
TaskName:"发送心跳",
Interval: 3 * 1000,
run:function (args) {
args.Done = false;
var async = eval(Wind.compile("async", function () {
var userInfo = GfUserDataClient.userInfo();
if (userInfo.ServiceKey != "") {
var res = $await(GfUserDataClient.sendHeartbeat(userInfo.UserName, userInfo.ServiceKey));
args.Done = true;
}
}));
async().start();
}
}
function $$PageReady() {
eval(Wind.compile("async", function () {
var taskMgnt = GfTaskManage.create();
taskMgnt.addTask(SendHeartBeat); //添加任务
taskMgnt.start();//开始执行
}))().start();
}