取消待處理的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