Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.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 AngularJS:调用回调后立即清除超时_Javascript_Angularjs_Promise - Fatal编程技术网

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

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

所以,我想说,每当我在angularJS中使用$timeout或$interval时,清理是一种很好的做法。我看到这篇文章讨论了应该如何清理它(例如,
$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%确定它会执行,用户是不可预测的。性能不会受到太多影响,您可以安心睡觉,因为您知道应用程序不会执行任何不必要的活动。

哦,这也行,但我问的是,这样做是好的还是合理的做法。我没有问在哪里/如何清理它。我们总是在它被执行后清理它。为什么要保留它直到你的范围被破坏。