在AngularJS中对服务进行链接调用的正确方法是什么?

时间:2016-01-30 20:08:14

标签: angularjs angular-services

我需要调用Restful服务端点来获取Id,一旦得到结果,我应该通过angularjs服务调用第二个Restful服务端点。 第一次调用返回一个客户ID,我需要使用此客户ID搜索有关该客户的其他信息。

正如我应该打电话并等待承诺,我不认为对承诺的嵌套是一种很好的实践。我的意思是,类似下面的代码不应该是一个简洁的解决方案。我是对还是错?什么应该是实现这一任务的好方法。

someService.someAction().then( function(data){
   var id = data.data;
   antoherCallToAnotherService.someOtherAction(id).then(function(data2){
         //do some stuff
   );
 );

谢谢

1 个答案:

答案 0 :(得分:1)

这是一种非常典型的方法。但是,您可以通过链接多个承诺来优化它:

someService.someAction().then(function(response) {
    var id = response.data;
    return antoherCallToAnotherService.someOtherAction(id);
})
.then(function(data2) {
    // data is available
});

这根本不是那么糟糕,但如果你愿意,可以进一步提高。您可能不应该使用整个response对象解决第一个承诺,底层服务应该使用实际(可能是已处理的数据)来解析。然后你的代码就变成了:

someService.someAction()
.then(antoherCallToAnotherService.someOtherAction)
.then(function(data) {
    // data is available
});

要使上述工作正常,someService.someAction应使用response.data解决(在您的情况下为id)。