Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.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 安格拉斯。调用angular ui模式时清除$timeout_Javascript_Angularjs_Timeout_Angular Ui - Fatal编程技术网

Javascript 安格拉斯。调用angular ui模式时清除$timeout

Javascript 安格拉斯。调用angular ui模式时清除$timeout,javascript,angularjs,timeout,angular-ui,Javascript,Angularjs,Timeout,Angular Ui,我在模态控制器中有几个$timeout表达式 App.controller('ModalCtrl', function ($scope, $timeout) { for (var i = 0; i < 10; i++) { (function () { var timer = $timeout(function () { console.log('timer') }, 1000);

我在模态控制器中有几个
$timeout
表达式

App.controller('ModalCtrl', function ($scope, $timeout) {
    for (var i = 0; i < 10; i++) {
        (function () {
            var timer = $timeout(function () {
                console.log('timer')
            }, 1000);
        })()
    }
})
我该怎么做


抱歉,代码格式错误。我不知道为什么,但我无法把它格式化得更好。我复制了代码:

$timeout
服务返回一个
Promise
对象,该对象可用于取消超时

// Start a timeout
var promise = $timeout(function() {}, 1000);

// Stop the pending timeout
$timeout.cancel(promise);

要取消所有挂起的超时,您需要维护一个承诺列表,并在打开模式时取消完整的列表。

您也可以通过这样做让他们自己取消自己

(function(){
  var timer = $timeout(function(){
    console.log(timer.$$timeoutId);
    $timeout.cancel(timer);
  }, 1000);
})();

你怎么能注入这样的控制器?这对我来说毫无意义。为什么要取消已调用的
$timeout
?我想知道Angular是否会让侦听器保持该超时。看起来是这样的,因为如果你多次调用超时,内存会不断增长,最终导致内存不足。我想你可以这么做。@pixelfreak,因为我们可以,而且它是免费的!
(function(){
  var timer = $timeout(function(){
    console.log(timer.$$timeoutId);
    $timeout.cancel(timer);
  }, 1000);
})();