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,请参阅以下示例: