我在这里有以下代码(删除了一些行以使其更清晰)。当用户单击编辑图标时,将调用editRow()函数,这将打开一个模型窗口。在此之后,代码尝试通过调用factory.submitItem来每秒保存数据。除非保存数据有问题,否则一切正常。
如何实现这一点,以便如果factory.submit item entityResource.update失败,则取消间隔并且代码每秒停止执行一次保存。
var factory = {
gridSetup: function ($scope) {
$scope.editRow = function (row, entityType) {
// modal stuff happens here
window.setTimeout(function () {
window.setInterval(function () {
factory.submitItem($scope, $scope.modal.data);
}, 1 * 60 * 1000);
factory.submitItem($scope, $scope.modal.data);
}, 1 * 60 * 1000);
}
},
submitItem: function ($scope, formData) {
var idColumn = $scope.entityType.toLowerCase() + 'Id';
var entityId = formData[idColumn];
switch ($scope.modal.action) {
case "edit":
var entityResource = $resource('/api/:et/:id', { et: $scope.entityType }, { update: { method: 'PUT' } });
entityResource.update({ id: entityId }, formData,
function (result) {
angular.copy(result, $scope.modal.data);
}, function (result) {
// what to put here ?
})
break;
}
},
答案 0 :(得分:2)
myInterval = window.setInterval(function () {
.....
}, 1 * 60 * 1000);
当你想要取消....
window.clearInterval(myInterval);
答案 1 :(得分:1)
setInterval()
返回一个间隔ID,您可以将其传递给clearInterval():
var yourInterval = setInterval(function(), time);
您可以通过以下方式取消:
clearInterval(yourInterval);
答案 2 :(得分:0)
你可以做一些与众不同的事情。该计划可能是这样的:
var everythingIsOk = true;
function doSomething(){
if (everythingIsOk) {
setTimeout(doSomething(),5000);
} else {
everythingIsOk = false;
return true;
}
}