`
shuaigg.babysky
  • 浏览: 561761 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

新浪微博的Jobs运行任务

阅读更多
function Jobs() {
		    this._jobTable = []
		}
		Jobs.prototype = {
		    _registedJobTable: {},
		    initialize: function() {},
		    _registJob: function(jobName, rel) {
		        this._registedJobTable[jobName] = rel
		    },
		    add: function(jobName) {
		        this._jobTable.push(jobName)
		    },
		    start: function() {
		        var jobs = this._jobTable;
		        var regJobs = this._registedJobTable;
		        var i = 0;
		        var joblen = this._jobTable.length;
		        var getTime = function() {
		            return new Date().valueOf()
		        };
		        var interNum = window.setInterval(function() {
		            if (i >= joblen) {
		                clearInterval(interNum);
		                return
		            }
		            var jobName = jobs[i];
		            var job = regJobs[jobName];
		            i++;
		            if (typeof job == "undefined") {
		                console.log("<b>[" + jobName + "# is undefiend!!!</b>", {
		                    html: true
		                });
		                return
		            }
		            var _try = true;
		            var _start = getTime();
		            try {
		                job.call()
		            } catch(e) {
		                console.log("<b>[" + jobName + "] failed!!!</b>", {
		                    html: true
		                });
		                _try = false
		            } finally {
		                if (_try) {
		                    var _end = getTime();
		                    console.log("[" + jobName + "] done in " + (_end - _start) + "ms.")
		                }
		            }
		        },
		        10)
		    },
		    call: function(jobName, args) {
		        if (typeof this._registedJobTable[jobName] != "undefined") {
		            this._registedJobTable[jobName].apply(this, args)
		        } else {
		            console.log("#" + jobName + "# is undefined!!!", {
		                color: "#900",
		                bgColor: "#FFF;"
		            })
		        }
		    }
		};
		$registJob = function(name, rel) {
		    Jobs.prototype._registJob(name, rel)
		};

 

测试用例:

$registJob('topic' , function() {
			for(var i = 0 ; i < 10000000 ; i++) {
				var arr = new Array(10000);
			}
			alert('function1 ends');
		});
		$registJob('loadComment' , function() {
			for(var i = 0 ; i < 100000 ; i++) {
				var arr = new Array(10000);
			}
			alert('function2 ends');
		});
		$registJob('testFun' , function() {
			for(var i = 0 ; i < 100000 ; i++) {
				var arr = new Array(10000);
			}
			alert('function3 ends');
		});
		function main() {
			var jobs = new Jobs();
			jobs.add("topic");
			jobs.add("loadComment");
			jobs.add('aaa');
			jobs.start();
		};
		window.onload = main;

 按照任务的方式来使制定的代码运行,巧妙的地方在于使用了setInterval,将函数的运行放到了不同的闭包中,如果其中的一个函数出了错,不会影响到其他的函数继续运行,其中添加了日志处理,记录下来每个job运行了多长时间。

分享到:
评论
1 楼 luochong 2011-11-20  
不错!  

相关推荐

    jobs分布式任务调度平台

    每个节点可以独立执行任务,避免单点故障,同时能够根据负载自动调整任务分发。 2. **任务调度策略**:Jobs提供了灵活的任务调度策略,包括定时任务、依赖任务、优先级任务等。用户可以根据业务需求设置不同的调度...

    grails jobs 定时任务 项目demo

    grails jobs 定时任务 项目demo

    plsql创建存储过程并创建job定时任务执行-详细笔记文档总结

    plsql创建存储过程并创建job定时任务执行详细笔记文档总结 在 Oracle 中,plsql 是一种强大的编程语言,可以用来创建存储过程和定时任务执行。在本文中,我们将详细介绍如何使用 plsql 创建存储过程并创建 job 定时...

    Quartz如何实现判断某个任务是否正在运行,在项目中用到的,已经测试过了

    在实际项目中,有时我们需要判断一个Quartz任务是否正在运行,以便进行相应的操作,如避免重复执行或者进行状态监控。本文将详细介绍如何在Quartz中实现这一功能。 首先,理解Quartz的工作原理是关键。Quartz通过...

    oracle jobs 导出为执行脚本

    /*oracle jobs 导出为执行脚本 &lt;br&gt; 就是把all_jobs或dba_jobs,导成DBMS_JOB.SUBMIT可以插入job的格式 其中all_jobs是当前用户的job,dba_jobs则是全部 下面只是随便整理了下,可以按照个人需要修改 ...

    开源项目-albrow-jobs.zip

    为了保证任务的可靠性和幂等性,`albrow/jobs`支持任务的持久化存储,即使在服务重启后,未完成的任务也能继续执行。 `albrow/jobs`库的另一个亮点是其灵活的配置选项。你可以根据实际需求选择不同的数据库(如...

    linux__jobs命令_bg_fg

    本文将详细介绍几个与系统任务管理相关的命令,包括`jobs`、`bg`、`fg`、`&`以及`ctrl + z`,它们都是在Shell环境下控制进程执行的重要工具。 首先,`&`符号是最常用的命令之一,它用于将一个命令放入后台执行。当...

    Oracle案例详细分析:Job任务停止执行

    10. Oracle Job任务的监控:Oracle Job任务的监控可以通过dba_jobs视图、系统日志、执行日志等来实现。 Oracle Job任务是Oracle数据库中非常重要的功能,通过对Oracle Job任务的理解和掌握,可以更好地管理和维护...

    PyPI 官网下载 | flask_jobs-0.0.8.tar.gz

    Flask是一个轻量级的Web服务程序,而flask_jobs则为其添加了处理异步任务的能力,这对于构建需要长时间运行或定时执行任务的应用程序至关重要。通过这个扩展,开发者可以方便地创建、调度和监控后台任务,无需离开...

    Oracle Job定时任务

    Oracle Job 定时任务是 Oracle 数据库中的一种定时执行任务的机制,它允许用户在指定的时间点或每天的某个时间点自行执行任务。 一、查询系统中的 Job 可以通过以下视图查询系统中的 Job: * `DBA_JOBS`: 查询所有...

    工作流定时任务执行类!

    分布式锁允许只有一个服务实例能够获取并执行任务,其他实例在锁被占用时则需等待。Redis因其高并发性和低延迟特性,常被用作实现分布式锁的工具。 2. **任务调度器**:如`AcquireTimerJobsThread.java`和`...

    oracle调度任务的书写格式

    在Oracle数据库中,调度任务(Jobs)是一种自动化执行SQL脚本或PL/SQL块的机制,这极大地提高了数据库管理员的工作效率。Oracle Jobs可以按照预设的时间间隔或特定日期执行,适用于执行备份、清理、统计更新等常规...

    使用Quartz执行定时任务

    此外,Quartz还支持集群模式,可以在多台服务器上分布执行任务,提高系统的可用性和可靠性。 总的来说,Quartz是一个功能强大且灵活的Java定时任务框架,结合了多种开源组件,能够满足各种复杂的企业级调度需求。...

    Go-jobs-一个可持久化和灵活的后台作业库

    Go-jobs包含了一个强大的调度器,它可以按照预设的时间间隔或指定时间点执行任务。调度器支持CRON表达式,使得设置定时任务变得简单。此外,调度器的线程安全设计确保了在多并发环境下的稳定运行。 5. **工作流程*...

    详解linux后台运行和关闭、查看后台任务

    fg、bg、jobs、&、...jobs -l选项可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated。但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识。也就是说,jobs命

    odoo定时任务task的实现方式

    - `user_id`:执行任务的用户ID,这里引用了Odoo内置的根用户。 - `interval_number`:两次任务执行的时间间隔,单位由`interval_type`决定。在此处为1,表示1个时间单位。 - `interval_type`:时间单位。可选值包括...

    活用Linux的背景任务.pdf

    在处理多个后台任务时,`jobs`命令可以显示任务列表和它们的状态,帮助你跟踪任务的执行情况。例如,`jobs -l`会列出任务的详细信息,包括PID。在某些情况下,你可能需要在任务执行到特定阶段时暂停,以便进行干预,...

    Java Oracle JOBS 自动调度

    本话题将聚焦于“Java Oracle JOBS 自动调度”,这是一个关于如何使用Java编程语言与Oracle数据库相结合来实现自动任务调度的知识点。在企业系统中,自动调度功能对于定期执行诸如数据备份、报表生成、系统维护等...

Global site tag (gtag.js) - Google Analytics