2016-07-08 3 views
2

javascriptで並行非同期リクエストを処理する方法を見たいと思っていますが、失敗したとしても成功したリクエストの結果を得る方法を知っていますか?もしそうでなければ、どうやってその状況に対処しますか?axios並行リクエスト:失敗したリクエストがあっても結果を得るための方法はありますか?

var axios = require('axios') 

var options = [{ 
     baseURL: 'https://some-base-url' 
    , url: '/some-path&key=some-key' 
    , method: 'post' 
    , data: 'some-data' 
}, { 
     baseURL: 'https://some-base-url' 
    , url: '/some-path&key=some-key' 
    , method: 'post' 
    , data: 'some-other-data' 
}, { 
     baseURL: 'https://some-base-url' 
    , url: '/some-path&key=WRONG-KEY' // WRONG KEY 
    , method: 'post' 
    , data: 'some-other-data' 
}] 

axios.all([ 
     axios.request(options[ 0 ]) 
    , axios.request(options[ 1 ]) 
    , axios.request(options[ 2 ]) 
]).then(axios.spread(function (res1, res2, res3) { 
    // when all requests successful 
})) 
.catch(function(res) { 
    // third request was unsuccessful (403) but no way to get 
    // the results of the two previous successful ones? 
    console.log(res) 
}) 

答えて

2

"オプション" 要求

axios.all([ 
     axios.request(options[ 0 ]) 
    , axios.request(options[ 1 ]) 
    , axios.request(options[ 2 ]).catch(function() { return false}) 
]).then(axios.spread(function (res1, res2, res3) { 
    console.log(res1) //Respone of options[0] 
    console.log(res2) //Response of options[1] 
    console.log(res3) //False (When options[2] fails) 
})) 
ため.catchブロックを追加します。
関連する問題