前端的环境变量

时间:2017-02-07 15:13:14

标签: angularjs http

我正在使用Java开发项目,特别是使用Spring和AngularJS。当我的页面加载(ng-init)时,我执行一个调用$ http查询的函数来检索环境变量列表。然后总是加载页面,我调用另一个$ http请求,需要我的第一个查询的结果。

问题是第二个查询在第一个查询完成之前就开始运行了,所以此时environnent变量是未定义的。我有一个异步查询问题。

你知道解决方案吗?

谢谢

3 个答案:

答案 0 :(得分:0)

使用承诺。使第一个函数异步,并将第二个函数放在第一个函数的.then()中。

答案 1 :(得分:0)

查看documentation for the $q服务,这是Promises的AngularJs(1.x)实现。

你可能有这样的东西

$http.get('url1')
    .then(function (response1) {
        console.log(response1);
    });

$http.get('url2')
    .then(function (response2) {
        console.log(response2);
    });

您的代码看起来应该是这样的

$http.get('url1')
    .then(function(response1) {
        console.log(response1);
        return $http.get('url2')
    })
    .then(function(response2) {
        console.log(response2);
    });

.then调用返回后,$http返回的承诺链接$http以外的任何内容都无法保证(并且可能永远都不会)。

如果您不使用promises(或不常用的回调)来控制HTTP请求/响应的异步流,那么您将无法保证这些操作何时相互关联。< / p>

答案 2 :(得分:0)

这里我的代码,Document是一个服务,loadDocument返回一个http请求:

$http.get('/env').then(function(variables) {
     Document.loadDocument(variables).then(function (data) {
             // next code.....
     });
});

执行loadDocument时,变量未定义。我不太了解承诺的使用......