所以,我想说的是,每当我在 angularJS 中使用 $timeout 或 $interval 时,清理是个好习惯。我看到这个 blog讨论了您应该如何清理它(即 $scope.$on("destroy"... )
)。我的问题是,是否可以在执行回调后立即清理它?我有一个返回超时 promise 的服务,如下所示:
service.foo = function(){
var timeout = $timeout(function(){
// .. do something .. //
}, 5000);
return timeout;
};
所以如果我调用此服务,我会执行如下操作:
var promise = myService.foo().then(function(){
$timeout.cancel(promise);
});
如果服务 foo 可能在同一 View 中被多次调用,这种方法是否合理?如有任何建议,我们将不胜感激。
最佳答案
如果计时器已经被解析,那么清理与否都没有区别。它已经超出了博客所警告的内容,即在范围被销毁后执行的计时器。
也就是说,正如博客所建议的那样,在 $destroy
上清理它是一个很好的做法,因为您永远无法 100% 确定它会执行,用户是不可预测的。性能不会受到太大影响,您可以安心休眠,因为您知道该应用不会执行任何不需要的事件。
关于javascript - AngularJS:调用回调后立即清除超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28523026/