我有一个角度应用程序,向用户显示可编辑的网格。允许用户编辑网格中的多个行,然后一次保存所有这些更改。当他们这样做时,我使用$q.all
并行发送对API的所有更新调用。
我希望能够为每个失败的调用向用户显示错误,其中包含有关未正确保存的对象的一些信息,但我无法弄清楚如何从中获取该信息。错误处理程序。
var ops = []
_.each($scope.items, function (item) {
if(item.Modified)
ops.push(dataService.update(item.itemID, item.otherField))
})
$q.all(ops)
.then(function (repsonse) {
//success
},
function (response) {
//in here I want to output the itemID and otherField values for the item(s) that failed
})
在API调用中发送的每个项目都有一些属性(itemID
和otherField
)。我希望这些值包含在用户的错误消息中。
这可能使用q.all还是我必须使用其他方法?
答案 0 :(得分:1)
$q.all
将触发错误回调,但在您的情况下,您只想记录哪些(如果有)失败而不触发任何其他操作错误。我会使用从.catch
返回一个承诺:
ops.push(dataService.update(item.itemID, item.otherField))
.catch(function () {
return {
status: "failed",
id: item.itemID
};
});
然后在$q.all
的回调中,您可以迭代回复并检查.status == "failed"
并检查这些ID。