Установка флага cancellable
в true в объекте параметров при создании ресурса позволяет отменить ожидающие запросы запросы. Нечто подобное должно работать (непроверенные!):
var Resource = $resource('/myresource', null, null, { cancellable: true });
var pending = [];
function newRequest() {
// Cancel previous request
if (pending) pending.$cancelRequest();
// Make a new request
var result = Resource.get();
result.$promise.then(function(resource) {
pending = undefined; // Reset pending when a request was successful
return resource;
}
// Remember this for cancelling
pending = result;
}
$scope.buttonAClicked = function() {
newRequest();
// Whatever else you need to do here
}
$scope.buttonBClicked = function() {
newRequest();
}
Вы просто должны убедиться, что каждый раз, когда вы делаете запрос, он сохраняется в ожидании. Если это может произойти из более чем одного места, вам, возможно, придется использовать массив.
Но что, если вызов уже достиг сервера после нажатия на кнопку A? Как вы можете игнорировать это? То, что вы могли бы сделать, это проигнорировать нажатие кнопки B в этом случае, но не на A, поскольку оно уже отправлено. –
Допустим, пользователь нажимает кнопку Button A, а затем быстро нажимает на Buttton B. В этом случае код выводит результат с кнопки A, а не на кнопку B. Это проблема ive ... Я хочу отобразить результат из последнего щелчка , – user2354898