暂停 angular 间隔然后继续
pause a angular interval and then resume
我有一个功能,我每 10 秒重复一次。这很好用。它显示命令。现在我想要一个接受订单功能。但是当点击它时我想暂停间隔。当接受订单时 returns 我想再次恢复这个间隔。
最好的方法是什么?
我的代码
if ($auth.isAuthenticated()) {
//request
$scope.checkNewOrders = function (){
newOrderService.getNewOrders().then(function (response) {
//console.log(response.data.status);
if (response.data == 'token_error') {
$auth.logout();
}
if (response.data.status == 'success') {
$rootScope.openOrders = response.data.data;
}
if (response.data.status == 'no_orders') {
$rootScope.openOrders = false;
}
});
};
//Put in interval, first trigger after 10 seconds
$interval(function(){
$scope.checkNewOrders();
}.bind(this), 10000);
//invoke initialy
$scope.checkNewOrders();
}
$scope.acceptOrder = function(orderid) {
console.log(orderid);
}
你应该创建一个变量 $interval
:
var timer = null;
$scope.checkNewOrders = function (){ ...
timer = $interval(function(){
$scope.checkNewOrders();
}.bind(this), 10000);
然后在点击函数里面,cancel
定时器:
$scope.acceptOrder = function(orderid) {
$interval.cancel(timer);
timer = null;
}
更新完成后,恢复:
newOrderService.getNewOrders().then(function (response) {
if (timer === null) {
timer = $interval(function(){
$scope.checkNewOrders();
}.bind(this), 10000);
}
...
我有一个功能,我每 10 秒重复一次。这很好用。它显示命令。现在我想要一个接受订单功能。但是当点击它时我想暂停间隔。当接受订单时 returns 我想再次恢复这个间隔。
最好的方法是什么?
我的代码
if ($auth.isAuthenticated()) {
//request
$scope.checkNewOrders = function (){
newOrderService.getNewOrders().then(function (response) {
//console.log(response.data.status);
if (response.data == 'token_error') {
$auth.logout();
}
if (response.data.status == 'success') {
$rootScope.openOrders = response.data.data;
}
if (response.data.status == 'no_orders') {
$rootScope.openOrders = false;
}
});
};
//Put in interval, first trigger after 10 seconds
$interval(function(){
$scope.checkNewOrders();
}.bind(this), 10000);
//invoke initialy
$scope.checkNewOrders();
}
$scope.acceptOrder = function(orderid) {
console.log(orderid);
}
你应该创建一个变量 $interval
:
var timer = null;
$scope.checkNewOrders = function (){ ...
timer = $interval(function(){
$scope.checkNewOrders();
}.bind(this), 10000);
然后在点击函数里面,cancel
定时器:
$scope.acceptOrder = function(orderid) {
$interval.cancel(timer);
timer = null;
}
更新完成后,恢复:
newOrderService.getNewOrders().then(function (response) {
if (timer === null) {
timer = $interval(function(){
$scope.checkNewOrders();
}.bind(this), 10000);
}
...