Во-первых, я плохо разбираюсь в angularjs.
Пока я изучал $q, я столкнулся со странной проблемой.
Когда я использую $q.all, я помещаю $http в обычную последовательность, ожидая получить результаты в том же порядке,
но то, что я получаю, было случайным результатом.
Посмотри на это и исправь мою глупость.
$q.all([
HttpService.editItem(
$scope.$parent.category_id, // category id
Define.CAR_CAT, // category url to request
$scope.car_id, // car_id wanna edit
{car_name: inputValue.toUpperCase()} // data
),
HttpService.getCarList(
$scope.$parent.category_id, // category id
Define.CAR_CAT // category url to request
)
]).then(function (results) {
if (results[0].statusText === 'OK' && results[1].statusText === 'OK') {
.....
});
«HttpService» — это служба моего приложения. Он возвращает обещание.
Я ожидал, что
сначала отредактируйте название автомобиля, а потом получите список автомобилей.
Но в результате я получил сначала список автомобилей, а затем отредактировал название автомобиля.
И я использую
вернуть $ q (функция (разрешить, отклонить) {});
вместо использования
$q.defer();
.
.
.
.
и это моя часть HttpService
function editItem(cat_id, cat_url, content_id, item_data) {
return $q(function (resolve, reject) {
$http({
method: 'PUT',
url: Define.TEST_URL + cat_id + cat_url + content_id,
data: item_data
}).then(function (response) {
resolve(response);
}, function (error) {
reject(error);
});
});
}
function getCarList(cat_id, cat_url) {
return $q(function (resolve, reject) {
$http({
method: 'GET',
url: Define.TEST_URL + cat_id + cat_url
}).then(function (response) {
resolve(response);
}, function (error) {
reject(error);
});
});
}
и вот ответ getCarList
{
"error_msg": "",
"error_num": 0,
"statusText": "OK"
"results": [
{
"car_id": "CAR0121",
"car_name": "AUDI R8"
},
{
"car_id": "CAR0122",
"car_name": "AUDI A6"
},
{
"car_id": "CAR0128",
"car_name": "BENZ"
},
{
"car_id": "CAR0130",
"car_name": "PORCHE"
},
]
}