[英]How to make http request in my case
我試圖防止在我的代碼中觸發多個http請求。
我有類似的東西
在我的控制器中
//if use click, fire this method
var getItems = function() {
factory.makeRequest.then(function(data){
//do stuff with data...
})
}
在我的工廠
var factory = {};
factory.makeRequest = function(){
if($http.pendingRequests.length===0) {
return getData()
.then(function(data) {
//do stuff here
return data;
})
}
}
factory.getData = function() {
return $http.get('/project/item');
}
return factory;
上面的代碼可以防止多次處理該請求。 但是,如果我在解決承諾之前再次單擊該按鈕,則會得到Cannot read property of .then of 'undefined'
。 我知道這是因為$http
請求沒有返回任何內容,因為我有$http.pendingRequests.length===0
條件。 上面的代碼為我提供了所需的信息,但我不知道如何防止控制台日志中的錯誤。 誰能幫我嗎? 非常感謝!
以下命令將返回當前請求的承諾(如果存在),否則將創建一個新請求並返回該承諾。 它將成功清除當前請求。
var factory = {};
factory._currentRequest = null;
factory.makeRequest = function(){
if(!factory._currentRequest) {
factory._currentRequest = factory.getData()
.then(function(data) {
//do stuff here
factory._currentRequest = null;
return data;
})
}
return factory._currentRequest
}
factory.getData = function() {
return $http.get('/project/item');
}
return factory;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.