Saya membuat demo di mana saya mengambil data dari server setelah interval waktu yang teratur menggunakan $interval
Sekarang saya harus menghentikan / membatalkan ini.
Bagaimana saya bisa mencapai ini? Jika saya perlu memulai ulang prosesnya, bagaimana cara melakukannya?
Kedua, saya punya satu pertanyaan lagi: Saya mengambil data dari server setelah interval waktu yang ditentukan. Apakah ada kebutuhan untuk menggunakan $scope.apply
atau $scope.watch
?
Ini plunker saya:
app.controller('departureContrl',function($scope,test, $interval){
setData();
$interval(setData, 1000*30);
function setData(){
$scope.loading=true;
test.stationDashBoard(function(data){
console.log(data);
$scope.data=data.data;
$scope.loading=false;
//alert(data);
},function(error){
alert('error')
}) ;
}
});
sumber
apply()
, jika Anda menggunakan$interval
layanan ini, karena layanan itu melakukannya untuk Anda. Tetapi jika Anda menggunakan built-insetInterval()
maka Anda mungkin harus menggunakannya$scope.$apply()
.$destroy
bekerja sama dengan baik denganhttp-auth-interceptor
seperti dalam kasus saya di mana saya ingin berhenti interval selama auth kegagalan (seperti sesi expired) dan mulai lagi setelah auth sukses. Terima kasih atas solusi yang sangat baik ini.var interval = $interval(function() { console.log('say hello'); }, 1000); $interval.cancel(interval);
sumber
var promise = $interval(function(){ if($location.path() == '/landing'){ $rootScope.$emit('testData',"test"); $interval.cancel(promise); } },2000);
sumber
$location.path()
dan bukan nama negara$scope.toggleRightDelayed = function(){ var myInterval = $interval(function(){ $scope.toggleRight(); },1000,1) .then(function(){ $interval.cancel(myInterval); }); };
sumber
Saat Anda ingin membuat janji penyimpanan interval ke variabel:
var p = $interval(function() { ... },1000);
Dan ketika Anda ingin menghentikan / menghapus interval cukup gunakan:
sumber