AngularJS中的多个$ http调用

时间:2014-07-03 19:15:01

标签: javascript angularjs rest http

所以这就是我需要做的。我在代码中使用Angular Deferred Bootstrap库,因为我需要在引导并尝试加载内容之前从RESTful服务器接收一些基本数据。无论如何,我必须在第一个电话结算后再拨打第二个电话。第二个调用是一个登录,它取决于第一个响应中包含的某个URL。

现在,我想在收到数据后尝试进行登录调用(我在.success()块中尝试)但是一旦第一个调用解析,程序就会在登录调用完成之前开始自举;事情破裂是因为我没有"登录"在服务器上。

window.deferredBootstrapper.bootstrap({
                element: window.document.body,
                module: 'app',
                resolve: {
                    STARTUP_CONFIG: ['$http', function($http) {
                        return $http.get(url1 + 'blah/blah/blah/' + layout);
                    }],

                    CONTEXT_CONFIG: ['$http', function($http) {
                        return $http.get(url1 + 'blah/blah/blah/blah').
                        success(function(data) {
                            $http.post('https://' + data.url2 + '/10001/guestidentity?client_id=' + data.id).
                            success(function(result){
                                token = result.token;
                            });
                        });
                    }],
                }
            });

任何人都知道我能做什么?

1 个答案:

答案 0 :(得分:1)

嗨,因为这是一个承诺,你可以链接下一个调用then函数,如

  $http(url).
  then(function(response){
           //note that this shouldn't be the body of the response
           // but the entire response stream so you need to check for the status code and the body and apply and possibly apply any transformation that is needed as it will probably be just text
             // then we can start the other call
             return $http(url); 
   })

这样,第二个承诺将被处理到最终目的地。