$q#all 방법을 사용하여 약속을 반환하는 문제가 있습니다. 내가 같은 위해에서 그들을 싶어 obj1, obj2 and obj3
설정하면반환 약속 순서대로
:
나는, 즉 서로 약속 의존 만들고 싶어.
어떻게하면됩니까?
Factory:
mainFactory.$inject = ['$http', '$q'];
function mainFactory($http, $q) {
var mainFactory = {
getPromises: getPromises
};
return mainFactory;
function getPromises(id) {
promises = {
'obj1': $http.get('http1'),
'obj2': $http.get('http2'),
'obj3': $http.get('http3'),
'obj4': $http.get('http4', { params: { 'id': id } }),
'obj5': $http.get('http5'),
'obj6': $http.get('http6', { params: { 'id': id } })
};
return $q.all(promises);
}
}
Controller:
MainCtrl.$inject = ['mainFactory'];
function MainCtrl(mainFactory) {
var vm = this;
mainFactory.getPromises(id)
.then(getResponse)
.catch(getError);
function getResponse(response) {
var keys = Object.keys(response), i = keys.length;
while (i--) {
var key = keys[i];
console.log(key); // I want all the keys in order, i.e. => obj1, obj2.. and so on
var value = response[key].data;
switch(key) {
...
}
}
}
function getError(error) {
console.log(error);
}
}
편집 : 나는이 방법을 시도
:
var promises = {};
return $http.get('/admin/http1.json').then(function (value) {
promises['obj1'] = value;
})
.then(function (result) {
return $http.get('/admin/http2.json').then(function (value) {
promises['obj2'] = value;
});
}).then(function (result) {
return $http.get('/admin/http3.json').then(function (value) {
promises['obj3'] = value;
});
});
return $q.all(promises);
약속이 좋지 않습니다. 죄송 합니다만, 대안은 http://caolan.github.io/async/docs.html#.eachOfSeries – Plato
을 사용하는 것입니다. 객체 키는 본질적으로 * 순서가 없습니다 *. 대신 배열을 사용하십시오. –
$ q.serial()에 대한이 기사를 확인하십시오. 나는 그것이 당신이 찾고있는 것과 정확히 같을 것이라고 생각합니다. http://www.codeducky.org/q-serial/ – mhodges