使用 $timeout 停止执行一系列事件
Stop execution of a sequence of events using $timeout
我正在使用 this 解决方案来启动序列。但现在我想停止点击。
点击事件是否触发OK,我已经在console.log上确认过了。我试过了
$timeout.cancel($scope.StartChange);
但没有成功,类仍在改变。
这可行,但我不知道这是否是最佳解决方案:http://plnkr.co/edit/xKBHdFhXy93NqtpVooXe?p=preview
var savePromise = function(promiseObj) {
//saves promise and returns it
$scope.terminateEarly.push(promiseObj);
return promiseObj;
};
$scope.startChange = function() {
console.log('start');
$scope.state = 'b';
console.log($scope.state);
return savePromise($timeout(angular.noop, 3 * 1000))
.then(function() {
$scope.state = 'c';
console.log($scope.state);
return savePromise($timeout(angular.noop, 6 * 1000))})
.then(function() {
$scope.state = 'd';
console.log($scope.state);
return savePromise($timeout(angular.noop, 12 * 1000))})
.then(function() {
$scope.state = 'e';
console.log($scope.state);
});
};
$scope.stopChange = function(tId) {
console.log('stop');
$scope.terminateEarly.forEach(function(t){
$timeout.cancel(t);
});
};
我正在使用 this 解决方案来启动序列。但现在我想停止点击。 点击事件是否触发OK,我已经在console.log上确认过了。我试过了
$timeout.cancel($scope.StartChange);
但没有成功,类仍在改变。
这可行,但我不知道这是否是最佳解决方案:http://plnkr.co/edit/xKBHdFhXy93NqtpVooXe?p=preview
var savePromise = function(promiseObj) {
//saves promise and returns it
$scope.terminateEarly.push(promiseObj);
return promiseObj;
};
$scope.startChange = function() {
console.log('start');
$scope.state = 'b';
console.log($scope.state);
return savePromise($timeout(angular.noop, 3 * 1000))
.then(function() {
$scope.state = 'c';
console.log($scope.state);
return savePromise($timeout(angular.noop, 6 * 1000))})
.then(function() {
$scope.state = 'd';
console.log($scope.state);
return savePromise($timeout(angular.noop, 12 * 1000))})
.then(function() {
$scope.state = 'e';
console.log($scope.state);
});
};
$scope.stopChange = function(tId) {
console.log('stop');
$scope.terminateEarly.forEach(function(t){
$timeout.cancel(t);
});
};