Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.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 如何取消所有挂起的$超时?_Javascript_Angularjs_Timeout - Fatal编程技术网

Javascript 如何取消所有挂起的$超时?

Javascript 如何取消所有挂起的$超时?,javascript,angularjs,timeout,Javascript,Angularjs,Timeout,我有一些代码使用AngularJS$timeout以特定的间隔多次调用另一个函数,使用循环。我正在尝试创建一个cancel函数,该函数将停止处理所有$timeout。我意识到我可能可以通过另一个循环来完成这项工作,遍历每个$timeout,但有时页面需要创建数千个$timeout,因此我真的希望有某种方法来停止所有当前挂起的$timeout。这里的文档$timeout似乎只讨论了使用cancel()停止特定承诺 是否可以在AngularJS中一次性取消所有当前挂起的$timeout?如果可以,如

我有一些代码使用AngularJS$timeout以特定的间隔多次调用另一个函数,使用循环。我正在尝试创建一个cancel函数,该函数将停止处理所有$timeout。我意识到我可能可以通过另一个循环来完成这项工作,遍历每个$timeout,但有时页面需要创建数千个$timeout,因此我真的希望有某种方法来停止所有当前挂起的$timeout。这里的文档$timeout似乎只讨论了使用cancel()停止特定承诺

是否可以在AngularJS中一次性取消所有当前挂起的$timeout?如果可以,如何取消?

下面是有问题的代码片段:

for(var i=1; i<=$scope.catalog.pages; i++) {
    $scope.catalog.timeouts['fetch'+i] = $timeout(function() {
        count++;
        if (!$scope.catalog.isCancelled) {
            $scope.results($scope.catalog.dataFile, {currentPage: count});
        } else {
            //cancel all the remaining timeouts somehow
        }
    }, 10*i);
}

for(var i=1;i角度超时与承诺一起工作,您可以调用该方法的cancel方法

那段代码给了我一个错误(forEach不是一个函数),我使用相同的一般原则(在循环中迭代每个承诺),对它进行了轻微的调整,这确实有效。
$scope.catalog.timeouts.forEach(function(promises) {
    promises.cancel && promises.cancel();
});