Javascript AngularJS:后台进程

Javascript AngularJS:后台进程,javascript,angularjs,Javascript,Angularjs,我有一个angular应用程序,我想添加一个运行时没有任何视图的后台进程。它所做的只是定期调用Web服务并对其进行处理,而不是UI 一种快速而肮脏的方法是将代码简单地放在window.onLoad中。但是我应该考虑用一种有棱角的方式吗?如果是,我是否将代码放入服务中?我最初如何“启动”这项服务?您自己回答,服务是正确的选择,您可以将其注入应用程序上的任何控制器中,如果不是这样,并且您没有控制器(或指令),那么您可以在angular.run中运行 angular.module('lookMaMyM

我有一个angular应用程序,我想添加一个运行时没有任何视图的后台进程。它所做的只是定期调用Web服务并对其进行处理,而不是UI


一种快速而肮脏的方法是将代码简单地放在window.onLoad中。但是我应该考虑用一种有棱角的方式吗?如果是,我是否将代码放入服务中?我最初如何“启动”这项服务?

您自己回答,服务是正确的选择,您可以将其注入应用程序上的任何控制器中,如果不是这样,并且您没有控制器(或指令),那么您可以在
angular.run中运行

angular.module('lookMaMyModule').run(function(injectables){
  do something fancy on run
})

这里有一个简单的概念,它可能会有小问题,但你会得到的想法

angular.bootstrap2 = function(module, element, callback){
    angular.bootstrap(module, element);
    callback();
}
从html和引导应用程序中删除ng应用程序标记

如果后台进程是ng模块,则使用
angular.module('name').run()否则使用自引导技术

app.js service.js
var MyServ=function(){
该值为0.intervalId;
this.start=函数(){
this.intervalId=setInterval(函数(){
log('executing');
}, 1000);
}
this.stop=函数(){
setInterval.cancel(this.intervalId);//不记得api,抱歉:<
}
});

我想你要找的是

app.run()
当angular应用程序启动时调用此函数


请参见

,这取决于此后台任务的功能。它也可以是服务,您可以在通常的运行阶段启动。@dfsq此后台任务在固定时间间隔内使用$http调用Web服务,就是这样。你能详细说明一下“正常跑步阶段”吗?谢谢。我想
run
可能正是我想要的。我确实有控制器,但我不想将此服务与其中任何一个绑定,因为它们是不相关的。任何控制器都可能有一天消失,但此后台任务仍将保留。阅读angular.run now…出于各种原因,我通常试图避免这种情况,但在我的工作大项目中,我们在
中运行了几个服务。run
主要是初始化服务,这些服务不会被控制器或指令使用,而是独立存在,就像一个单一工厂或服务一样
var MyServ = function(){
    this.intervalId = 0;
    this.start = function(){
        this.intervalId = setInterval(function(){
            console.log('executing');
        }, 1000);
    }
    this.stop = function(){
        setInterval.cancel(this.intervalId); //don't remember api, sorry :<
    }
});
app.run()