У меня есть календарь, который отображает события от MongoDB. Каждый раз, когда пользователь нажимает на предыдущую или следующую кнопку, я выполняю асинхронный вызов, а затем меняю текущий массив дней и событий; но если пользователь нажимает на кнопку несколько раз, отображаются двойные результаты.
$scope.next = function () {
//reset array
$scope.gridOptions.data=[];
//date of week
myService.dbAction(dt3,dt4).then(function (data) {
check(data);
$scope.gridOptions.data = $scope.setts;//update data
}, function (error) {
console.error('ERROR: ' + error);
})
}
Я хочу только события прошлой недели, как это сделать?
Быстрое исправление - добавить флаг fetchPending
. Используйте его, чтобы избежать дублирования выборки.
$scope.next = function () {
if ($scope.fetchPending) return;
$scope.fetchPending = true;
//reset array
$scope.gridOptions.data=[];
//date of week
myService.dbAction(dt3,dt4).then(function (data) {
check(data);
$scope.gridOptions.data = $scope.setts;//update data
}).catch ( function (error) {
console.error('ERROR: ' + error);
}).finally( function () {
$scope.fetchPending = false;
})
}