2016-11-16 5 views
0

Promise.allで使用しているHTTPリクエストの配列があります。問題は、Promise.allが実行されたときに、console.log(values);が解決されたhttp要求応答オブジェクトの代わりに元のdealers配列を示していることです。 Promise.allで解決されたhttp要求が表示されないのはなぜですか?Promise.allで角度のないhttpリクエストが実現しません

function getDealer(regionMarketDealer) { 
    var params = { 
     url: API_BASE_URI + 'service/ppv/' + regionMarketDealer, 
     method: 'GET' 
    }; 

    return $http(params); 
    } 

function getAllMarketDealers(dealers) { 
    var dealerHttpRequests = dealers.filter(function(dealer) { 
    if (dealer.name !== 'All') { 
     var promise = getDealer(dealer.name); 
     return promise; 
    } else { 
     return false; 
    } 
    }); 

    Promise.all([dealerHttpRequests]) 
    .then(function(values) { 
     console.log(values); 
    }); 
} 
+0

を返すべきフィルタ配列の約束を作成したい場合 – Bergi

+0

ya、私はそれを認識し、配列を削除 – dman

答えて

1

.filterは、関数内でtrueまたはfalseを返すことによって配列をフィルタリングするために使用され、フィルタ処理された結果で新しい配列を作成します。

あなたは、あなたが、あなたがそこに配列の配列を持っている?.MAP使用し、約束

function getDealer(regionMarketDealer) { 
    var params = { 
     url: API_BASE_URI + 'service/ppv/' + regionMarketDealer, 
     method: 'GET' 
    }; 

    return $http(params); 
    } 

function getAllMarketDealers(dealers) { 
    var dealerHttpRequests = dealers.filter(function(dealer) { 
     return dealer.name !== 'All'; 
    }) 
    .map(function(dealer) { 
     return getDealer(dealer.name); 
    }); 

    Promise.all(dealerHttpRequests) 
    .then(function(values) { 
     console.log(values); 
    }); 
} 
関連する問題