簡體   English   中英

在我的情況下如何發出HTTP請求

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM