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