相关疑难解决方法(0)

AngularJS:使用异步数据初始化服务

我有一个AngularJS服务,我想用一些异步数据进行初始化.像这样的东西:

myModule.service('MyService', function($http) {
    var myData = null;

    $http.get('data.json').success(function (data) {
        myData = data;
    });

    return {
        setData: function (data) {
            myData = data;
        },
        doStuff: function () {
            return myData.getSomeData();
        }
    };
});
Run Code Online (Sandbox Code Playgroud)

显然这不会起作用,因为如果某些东西doStuff()myData返回之前尝试调用,我将得到一个空指针异常.据我所知,从这里这里提出的其他一些问题,我有几个选择,但没有一个看起来很干净(也许我错过了一些东西):

使用"运行"设置服务

设置我的应用时,请执行以下操作:

myApp.run(function ($http, MyService) {
    $http.get('data.json').success(function (data) {
        MyService.setData(data);
    });
});
Run Code Online (Sandbox Code Playgroud)

然后我的服务看起来像这样:

myModule.service('MyService', function() {
    var myData = null;
    return {
        setData: function (data) {
            myData = data;
        },
        doStuff: function () {
            return myData.getSomeData();
        } …
Run Code Online (Sandbox Code Playgroud)

javascript service asynchronous angularjs angular-promise

472
推荐指数
7
解决办法
21万
查看次数