我有一个表格显示对象列表,每个对象都与任意数量的子对象相关联。我正在使用Angular 1.2.20,Express 4.6.1和节点0.10.25。该表具有“删除”按钮,将调用两个API调用:
1)删除所选对象 2)删除子对象与所选对象
第一删除相关的工作就好了 - 在两个API调用会很快返回DELETE 200。但是,随后对表格的删除尝试会导致API调用在Chrome和Firefox中不会返回几分钟。 Safari似乎工作得很好,很奇怪。如果我继续尝试删除更多表项,那么页面会停止响应任何输入,直到我执行浏览器刷新。我可以看到$ http.pendingRequests中的请求被填满,并且在几分钟之后它们不会被刷新,即使这样它们也会被小批量刷新。
就好像angularjs不会放弃最初的API调用,这会导致后续API调用的备份。不知道为什么这在Safari浏览器中可用,但不适用于Chrome或Firefox。该API只是用MongoDB的ExpressJS,但即使我只是实现了空ExpressJS控制器功能进行删除通话,问题依然存在:
exports.delete = function(req, res) {
/*FormDistributionGroup.remove({_id: req.params.distGroupId},
function(err, distGroup) {
if(err) {
return res.json(500, err);
} else {
return res.json(distGroup);
}
});*/
return res.json({});
}
下面是“删除”按钮查看代码:
<button class="btn btn-sm btn-danger" ng-click="removeDistsByGroup(distGroup._id)">Remove</button>
以下是“删除”按钮的控制器编码:
$scope.removeDistsByGroup = function(distGroupId) {
var promises = [];
promises.push(FormDistributionGroupService.delete(distGroupId));
promises.push(FormDistributionService.deleteByDistGroupId(distGroupId));
$q.all(promises).then(function() {
window.alert("Successfully removed distribution group.");
$scope.distGroupList = $scope.distGroupList.filter(function(distGroup) {
return distGroup._id != distGroupId;
});
});
}
下面是由控制器调用的两个相关联的服务功能:
个FormDistributionService:
deleteByDistGroupId: function(groupDistId) {
return $http.delete(distributeJsonPath + '/group-dist/' + groupDistId).then(function(res) {
return res.data;
});
}
FormDistributionGroupService:
delete: function(id) {
return $http.delete(distributeJsonPath + '/' + id).then(function(res) {
return res.data;
});
},
这似乎只是对Express API的DELETE请求的问题。如果我将按钮点击绑定到连续的GET请求,则响应会立即返回。 –
更好奇 - 这似乎只发生在OS X浏览器上: 操作系统:OS X 10.9.5 Firefox版本:34.0.5 Chrome版本:39.0.2171.95 –