Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度观察使函数运行多次?_Javascript_Angularjs - Fatal编程技术网

Javascript 角度观察使函数运行多次?

Javascript 角度观察使函数运行多次?,javascript,angularjs,Javascript,Angularjs,我有以下代码: function myFunction(elem){ console.log(elem); } scope.$watch(function(){ return obj.width; }, function(valTo, valFrom) { myFunction(valTo); }); 但我对这样做有疑问。观察者触发事件后,myFunction函数将运行。但是,如果观察者触发多个事件,它是否会在所有这些事件上保持函数运行,或者在新事件开始后,它是否会停止以前每个事件上

我有以下代码:

function myFunction(elem){
console.log(elem);
}

scope.$watch(function(){
  return obj.width;
}, function(valTo, valFrom) {
  myFunction(valTo);
});

但我对这样做有疑问。观察者触发事件后,
myFunction
函数将运行。但是,如果观察者触发多个事件,它是否会在所有这些事件上保持函数运行,或者在新事件开始后,它是否会停止以前每个事件上的所有操作?

如果obj.width更改三倍于myFunction()将触发三次。从Angular documentation:每次调用$digest()时都会调用watchExpression,并应返回将被监视的值。(watchExpression在使用同一输入执行多次时不应更改其值,因为$digest()可能会多次执行它)。也就是说,watchExpression应该是幂等的。@OronBen David那么,如果我有一个随页面运行的函数,如果它在watch上被调用三次,它会保持该函数的三个实例运行吗?是的-再次来自Angular Documentation:he$digest()继续调用观察程序,直到没有其他侦听器触发。这意味着有可能进入无限循环。如果迭代次数超过10,此函数将抛出“超出最大迭代限制”。有关如何清除$watch,请参阅以下示例: