2016-05-08 5 views
1

Привет, меню, в котором каждая кнопка в меню вызывает вызов ресурса (REST). Ive случай, когда пользователь нажимает кнопку A, а затем быстро нажимает кнопку B. В этом случае я хочу обработать последний вызов и игнорировать все остальные, сделанные ранее.AngularJS вызов нескольких ресурсов, только один обработчик

Как я могу это достичь?

+0

Но что, если вызов уже достиг сервера после нажатия на кнопку A? Как вы можете игнорировать это? То, что вы могли бы сделать, это проигнорировать нажатие кнопки B в этом случае, но не на A, поскольку оно уже отправлено. –

+0

Допустим, пользователь нажимает кнопку Button A, а затем быстро нажимает на Buttton B. В этом случае код выводит результат с кнопки A, а не на кнопку B. Это проблема ive ... Я хочу отобразить результат из последнего щелчка , – user2354898

ответ

1

Установка флага 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(); 
} 

Вы просто должны убедиться, что каждый раз, когда вы делаете запрос, он сохраняется в ожидании. Если это может произойти из более чем одного места, вам, возможно, придется использовать массив.

 Смежные вопросы

  • Нет связанных вопросов^_^