如何使用时间间隔检查局部变量的更改

How to check for changes in local variable with a time lapse?

本文关键字:局部变量 检查 何使用 时间      更新时间:2023-09-26

我想在局部变量的值发生变化时调用一个函数。我尝试了使用while循环的代码,但我被锁定在循环中。

var titleChanged = false;
$scope.$watch('title',function(newValue, oldValue) {
    if (newValue !== oldValue) {
        titleChanged = true;
    }
});
while (true) {
    $timeout(checkForChangeAndSave, 3000);
};
function checkForChangeAndSave() {
    if(titleChanged) {
        updateNote();
        titleChanged = false;
    }
}
function updateNote() {
    notesService.update($stateParams.id, {title: $scope.title});
    notesService.getAll();
};

我建议你使用angular的interval服务。

使用while实现的方式会在超时执行期间阻塞代码。

看一下angular interval文档

正如我所理解的那样,你想要监视一个局部变量,而不是(附加到$scope),我可能会建议使用这个监视语法

$scope.$watch(function(){return titleChanged;},function(newVal,oldVal){
  // logic goes here
});