javascript - AngularJS:调用回调后立即清除超时

标签 javascript angularjs promise

所以,我想说的是,每当我在 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/

相关文章:

Javascript 数组存储值

javascript - 箭头函数不起作用。普通的可以。为什么?

angularjs - 加载新路线后, Controller 的旧实例仍在运行

javascript - 使动态创建的 promise 按顺序执行

javascript - 无法使用 ES6 导入语法

javascript - Backbone.js 使用 native websockets 同步

angularjs - 这是 "Deferred Antipattern"吗?

jquery - Angular JS 表单重新加载页面

javascript - 使用 Promise 递归修改对象

node.js - 链接 promise 更新 Mongoose 中的引用文档