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);
})();