2015-09-08 16 views
8

Tôi có một chức năng mà tôi lặp lại sau mỗi 10 giây. Điều này hoạt động tốt. Nó cho thấy các đơn đặt hàng. Bây giờ tôi muốn có một chức năng để chấp nhận. Nhưng khi điều này được nhấp vào tôi muốn pauze khoảng thời gian. Và khi lệnh chấp nhận trả lại, tôi muốn tiếp tục lại khoảng thời gian này.tạm dừng khoảng thời gian góc và sau đó tiếp tục

cách tốt nhất để làm điều này là gì?

mã của tôi

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); 
} 
+1

Bạn có thể chuyển giá trị trả về của '$ interval' thành' $ interval.cancel' để hủy khoảng thời gian. Bạn cũng có thể chỉ có một nhánh bên trong hàm interval trả về và không làm gì nếu một cờ boolean được thiết lập. –

Trả lời

8

Bạn nên tạo một biến của $interval:

var timer = null; 
$scope.checkNewOrders = function(){ ... 

timer = $interval(function(){ 
    $scope.checkNewOrders(); 
}.bind(this), 10000); 

Sau đó bên trong hàm nhấp chuột, cancel bộ đếm thời gian:

$scope.acceptOrder = function(orderid) { 
    $interval.cancel(timer); 
    timer = null; 
} 

Sau khi kết thúc cập nhật , tiếp tục:

newOrderService.getNewOrders().then(function (response) { 
    if (timer === null) { 
     timer = $interval(function(){ 
      $scope.checkNewOrders(); 
     }.bind(this), 10000); 
    } 
    ... 
+1

Cần lưu ý: điều này không tạm dừng khoảng thời gian và tiếp tục tại nơi nó đã dừng lại. Nó hủy bỏ khoảng thời gian ban đầu và sau đó bắt đầu lại từ đầu. – Ryan

Các vấn đề liên quan