【发布时间】:2017-07-14 15:13:40
【问题描述】:
我有一组要同时运行的承诺。我正在使用$q.all 来实现这一目标。当一个承诺返回 404 响应时,任何其他承诺都未实现。我希望能够在 $q.all 函数上单独获得错误承诺。我该怎么做?
var idPais = 13, idUF = 20;
var promises = [
PaisAPI.list(),
UnidadeFederativaAPI.list(idPais),
MunicipioAPI.list(idUF)
];
$q.all(promises).then(
function(values) {
var paises = values[0].data;
var ufs = values[1].data;
var municipios = values[2].data;
console.log('paises ', paises.length);
console.log('ufs ', ufs.length);
console.log('municipios ', municipios.length);
$scope.paises = paises;
$scope.unidadesFederativas = ufs;
$scope.municipios = municipios;
},
function(error) {
if (error.status == 500) {
alert('Server error');
}
//when one of the promises get a 404 response any other one are unfulfilled
}
);
【问题讨论】:
-
当您收到 404 错误时,使各个承诺不会失败:在每个承诺上添加一个错误处理例程,以替换您要在服务器不可用时使用的值。
标签: javascript angularjs promise q