取消待处理的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 ===关键字',但我会接受你的答案。非常感谢 :) – WorkWe