我需要调用Restful服务端点来获取Id,一旦得到结果,我应该通过angularjs服务调用第二个Restful服务端点。 第一次调用返回一个客户ID,我需要使用此客户ID搜索有关该客户的其他信息。
正如我应该打电话并等待承诺,我不认为对承诺的嵌套是一种很好的实践。我的意思是,类似下面的代码不应该是一个简洁的解决方案。我是对还是错?什么应该是实现这一任务的好方法。
someService.someAction().then( function(data){
var id = data.data;
antoherCallToAnotherService.someOtherAction(id).then(function(data2){
//do some stuff
);
);
谢谢
答案 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
)。