У меня есть сервис API:Отменить отложенные вызовы API в Restangular
var SearchSuggestionApi = function (Restangular) {
return {
getSuggestion: function (keyword) {
return Restangular.one('search').customGET(null, {keyword:keyword});
}
};
};
SearchSuggestionApi.$inject = [
'Restangular'
];
У меня есть контроллер для вызова этого API:
vm.getSuggestion = function (keyword) {
SearchSuggestionApi.getSuggestion(keyword)
.then(
function (data) {
vm.listData = data;
}, function (error) {
console.log(error);
});
};
Моя проблема в том, когда я называю vm.getSuggestion(keyword)
два или много времени (необходимо позвонить чем один раз). Такие, как:
vm.getSuggestion('a'); // => Return a array with many object in this
vm.getSuggestion('a b');// => Return empty array
Поскольку vm.getSuggestion('a')
возвратных много данных, он закончит после vm.getSuggestion('a b')
. Таким образом, vm.listData
- [{object1}, {object2}, ...]
, но я хочу vm.listData
- []
(данные ответа последней функции).
Как отменить ожидающий вызов API в первой функции, когда я вызываю функцию секунд или другие способы получить последние данные ответа и установить для vm.listData
.
Я исследовал некоторые статьи о cancel pending API calls
, но это не помогает мне в моей проблеме.
Спасибо за вашу помощь :)
Я нашел решение - проверить 'vm.keyword === keyword', но я приму ваш ответ. Спасибо :) – WorkWe