Javascript AngularJS:调用回调后立即清除超时
所以,我想说,每当我在angularJS中使用$timeout或$interval时,清理是一种很好的做法。我看到这篇文章讨论了应该如何清理它(例如,Javascript AngularJS:调用回调后立即清除超时,javascript,angularjs,promise,Javascript,Angularjs,Promise,所以,我想说,每当我在angularJS中使用$timeout或$interval时,清理是一种很好的做法。我看到这篇文章讨论了应该如何清理它(例如,$scope.$on(“销毁”…))。我的问题是,在执行回调后立即清理它可以吗?我有一个服务返回超时承诺,类似这样: service.foo = function(){ var timeout = $timeout(function(){ // .. do something .. // }, 5000); return t
$scope.$on(“销毁”…)
)。我的问题是,在执行回调后立即清理它可以吗?我有一个服务返回超时承诺,类似这样:
service.foo = function(){
var timeout = $timeout(function(){
// .. do something .. //
}, 5000);
return timeout;
};
因此,如果我调用此服务,我会执行以下操作:
var promise = myService.foo().then(function(){
$timeout.cancel(promise);
});
如果服务foo可能在同一视图中被多次调用,这种方法是否合理?如果您有任何建议,我们将不胜感激。一旦调用超时,请取消超时
var timeout = $timeout(function(){
//cancel timeout
}, 5000);
如果计时器已被解析,则清除与否没有区别。它已经超过了博客的警告,即在作用域被破坏后正在执行计时器
这就是说,正如博客所建议的,在
$destroy
上清理它是一个很好的做法,因为你永远不能100%确定它会执行,用户是不可预测的。性能不会受到太多影响,您可以安心睡觉,因为您知道应用程序不会执行任何不必要的活动。哦,这也行,但我问的是,这样做是好的还是合理的做法。我没有问在哪里/如何清理它。我们总是在它被执行后清理它。为什么要保留它直到你的范围被破坏。