AngularJS:后台进程

AngularJS: Background process

本文关键字:后台进程 AngularJS      更新时间:2023-09-26

我有一个angular应用程序,我想添加一个在没有任何视图的情况下运行的后台进程。它所做的只是定期调用一个Web服务并对此做些什么,而不是UI。

一个快速而肮脏的方法是简单地将代码放在window.onlad中。但我应该考虑用有角度的方式来做吗?如果是,我是否将代码放入服务中?我最初将如何"启动"此服务?

您自己回答,服务是正确的选择,您可以将其注入应用程序上的任何控制器中,如果不是这样,并且您没有控制器(或指令),那么您可以在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

angular.module('name', ['deps']);
angular.bootstrap2(['name'], document.body, function(){
    var process_1 = new MyServ();
    process_1.start();
});

service.js

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()

当angular应用程序启动时调用

参见https://docs.angularjs.org/api/ng/type/angular.Module