Я хочу иметь возможность связывать обещания, чтобы сделать код синхронным. Моя проблема в том, что в зависимости от результата первого запроса $http я могу либо захотеть отправить другой, либо нет. В случае, если я решу не отправлять еще один запрос $http, мне не нужно, чтобы мой второй then()
что-либо делал. Но так как мой второй then()
не знает обо всем этом, и он все равно там висит, поэтому я решил, что мне нужно вернуться с первого, а затем какое-то фальшивое фиктивное обещание. Но я также хотел бы распознать этот случай во втором then() . Я придумал возвращать $q.when('какое-то значение') из первого случая. Вот код:
$http.get(url, params)
.then(function(res) {
res = res.data;
if (res.status == 'ok' && res.rows.length > 0) {
$scope.roomTypes = res.rows;
return $q.when({ isDummy: true }); //in this case I don't need to send another request
} else if (res.rows.length === 0 && $scope.request.roomType) {
return $http.get(url2, params2); //make second request and return then`able promise
}
}, function(res) {
throw 'Error';
})
.then(function(res) {
res = res.data;
if (res.status == 'ok') {
var roomType = {
room_type: res.roomType.id,
description: res.roomType.description
};
$scope.roomTypes.push(roomType);
} else if (res.isDummy) {
//ok that's our dummy promise
} else {
//format of response unexpected it means something went wrong
throw "error";
}
}, funcrtion(res) {
throw "some Error";
})
.catch(function(res) {...})
.finally(function() {...});
Дело в том, что я хочу увидеть значение, с которым обещание было разрешено ({isDummy: true}), но как мне это сделать? Я получаю undefined
в своем параметре res
.
funcrtion
- person rmorrin   schedule 22.09.2015