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

Добавить .catch блок для "дополнительного" запрос

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) 
}))