如何做出承诺,所有有几个请求



我正在尝试浏览我拥有的汽车列表以生成request。这些生成的请求我想存储在列表中,但不执行它们,甚至稍后将其传递给axios.all但我得到的错误是在将请求存储在列表中时执行它们。

轴模块

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

您需要返回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 ***")
})
}

否则,它看起来不错。

您不会从 requestUpdateStatus 返回承诺,因此不会将任何内容推送到请求数组中以解析。

最新更新