Как правильно связывать звонки с сервисами в AngularJS?
Мне нужно вызвать конечную точку службы Restful, чтобы получить Id, и как только я получу результат, я должен вызвать вторую конечную точку службы Restful через службу angularjs. Первый звонок возвращает идентификатор клиента, с этим идентификатором клиента мне нужно искать дополнительную информацию об этом клиенте.
Поскольку я должен звонить и ждать обещаний, я не думаю, что вложенные вызовы обещаний - это хорошая практика. Я имею в виду, что что-то вроде приведенного ниже кода не должно быть аккуратным решением. Я прав или нет? Что должно быть хорошим способом для достижения этой задачи.
someService.someAction().then( function(data){
var id = data.data;
antoherCallToAnotherService.someOtherAction(id).then(function(data2){
//do some stuff
);
);
Спасибо
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
в твоем случае).