Как сделать Promise.all с несколькими запросами - PullRequest
0 голосов
/ 16 октября 2019

Я пытаюсь просмотреть список имеющихся у меня автомобилей, чтобы сгенерировать request. Эти сгенерированные запросы я хочу сохранить в списке, но не выполняя их, даже чтобы потом передать их axios.all, но ошибка, которую я получаю, заключается в том, что во время сохранения запросов в списке они выполняются.

модуль axios

const axios = require("axios")

let requests = []
cars.forEach(car => requests.push(requestUpdateStatus(car)))

axios.all(requests).then(result => console.log(result)).catch(error => console.log(error))


function requestUpdateStatus(car) {
    return new Promise((resolve, reject) => {
        let jsonResponse = JSON.stringify({
            model: car.model,
            year: car.year
        })

        axios.post('http://???/update-status', jsonResponse, { timeout: 50000 })
            .then(response => {
                resolve("HELLO")
            }).catch(error => {
                reject("*** ERROR ***")
            })
    })

}

Ответы [ 2 ]

3 голосов
/ 16 октября 2019

Вам нужно вернуть Promise:

function requestUpdateStatus(car) {
    let jsonResponse = JSON.stringify({
        model: car.model,
        year: car.year
    })

    return axios.post('http://???/update-status', jsonResponse, { timeout: 3000 })
        .then(response => {
            console.log("HELLO")
        }).catch(error => {
            console.log("*** ERROR ***")
        })
}

В противном случае это выглядит хорошо.

0 голосов
/ 16 октября 2019

Вы не возвращаете обещание из requestUpdateStatus, поэтому в массив запросов ничего не помещается для разрешения.

...