AngularJS在返回之前解决promisse

时间:2017-07-14 19:46:47

标签: angularjs

下午好,

我是angularJS的新手,很抱歉,如果我问一个基本问题...... 但我有一个问题:

我有一个服务(Service2)从一个配置中获取一个字符串,我有另一个服务(Service1),它使用这个service2做更多的操作并返回一个URL(返回service2 + service1上的操作)。 。 但是,在函数initialize()中,它会跳过执行

Service2.getConfig().then(function (config) {
            baseUrl = config.endPointUrl;
        });

直接回归。网址不完整我需要什么... 您是否有任何关于如何在从service2执行所有操作后返回service1的建议?

这是我要做的基本代码

服务1

function Service1($resource, Service2) {

    var resourceUrl = "";
    var baseUrl = "";

    initialize();

    function initialize() {

        Service2.getConfig().then(function (config) {
            baseUrl = config.endPointUrl;
        });

        resourceUrl = baseUrl + "/event/history/period";

    }
    return $resource(resourceUrl, {}, {
        'query': { method: 'GET', isArray: true }
    });

}

服务2

function service2($resource, $log) {
    var configService = {};

    configService.getConfig = getConfigFromServer;

    return configService;

    function getConfigFromServer() {
        var eventDataResource = $resource('api/service-config');
        return eventDataResource.get().$promise;
    }
}

2 个答案:

答案 0 :(得分:0)

只有拥有数据后才需要返回。 getConfig()似乎是异步调用。因此,将您的返回移至.then回调是最简单的操作:

function Service1($resource, Service2) {
    var resourceUrl = "";
    var baseUrl = "";

    Service2.getConfig().then(function (config) {
        baseUrl = config.endPointUrl;
        resourceUrl = baseUrl + "/event/history/period";
        return $resource(resourceUrl, {}, {
            'query': { method: 'GET', isArray: true }
        });
    });
}

了解详情:Promises.then()

答案 1 :(得分:-1)

搜索更多并向其他人询问此问题,我使用 $ http

找到以下解决方案
{{1}}

感谢大家!现在我对承诺了解得更多:D