我正在对一些地址进行地理编码,有时其中一些会失败。我希望能够获得其余结果并忽略失败的结果,以便我可以在 map 上显示其他坐标。目前 $q.all 会在一个被拒绝时调用 errorHandler,所以我失去了其他 promise 的结果。
$q.all(promises).then(function(coords) {
for (var j = 0;j<coords.length;j+=1) {
//success code
}
}, function(error) {
console.log("Failed",error.type,error.message);
});
最佳答案
Interrobang 建议的解决方案很好(减去 bug),但如果您不喜欢装饰器影响代码中的每一个 promise ,您可以获得类似于 allSettled 的东西:
var suppress = function(x) { return x.catch(function(){}); }
$q.all(promises.map(suppress)).then(function(coords) {
for (var j = 0; j < coords.length ; j+=1) {
//coords[j] contains the coords on success or is undefined on failure
}
});
关于javascript - 当一个 promise 被拒绝时,让 $q.all 静静地失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25630994/