用 Promise.all 替换循环的 http 调用
Replacing a looped http call with Promise.all
我正在尝试使用 Axios 替换发送 http 请求的循环。 http 是一个 Axios 对象,returns 是一个承诺。我想更改代码,以便使用 Promises.all() 而不是循环。我正在尝试创建一个 Promise,推入一个数组,然后传递给 Promises.all。我的承诺数组中只有空数组。
对于我做错的任何指示,我将不胜感激。
// Converting this
responseData = [];
for (const record of response.records) {
let response = await http.get('/records/' + record.id);
responseData.push(response.data.data);
}
// I am trying to convert to this ..
let promises = [];
for (const record of response.data.data) {
let promise = new Promise((resolve, reject) => {
let response = http.get('/records/' + record.id)
.then(response => {
return response.json();
})
.then(resp => {
// console.log(resp.data.data);
//return resp.data.data
resolve(resp.data.data);
});
return response;
});
promises.push(promise);
}
Promise.all(promises).then(records);
不完全确定是否需要 response.json(),以及 .records 和 .data.data 应该放在哪里……但这可能有效:
const promises = [];
for (const record of response.records) {
promises.push(
http.get('/records/' + record.id)
.then(response => response.json()) //maybe?
.then(response => response.data.data)
)
}
Promise.all(promises).then(records => { /* do something */ } );
或使用地图:
const promises = response.records.map(record =>
http.get('/records/' + record.id)
.then(response => response.json()) //maybe?
.then(response => response.data.data)
)
Promise.all(promises).then(responseData => {/* do something */} );
我正在尝试使用 Axios 替换发送 http 请求的循环。 http 是一个 Axios 对象,returns 是一个承诺。我想更改代码,以便使用 Promises.all() 而不是循环。我正在尝试创建一个 Promise,推入一个数组,然后传递给 Promises.all。我的承诺数组中只有空数组。
对于我做错的任何指示,我将不胜感激。
// Converting this
responseData = [];
for (const record of response.records) {
let response = await http.get('/records/' + record.id);
responseData.push(response.data.data);
}
// I am trying to convert to this ..
let promises = [];
for (const record of response.data.data) {
let promise = new Promise((resolve, reject) => {
let response = http.get('/records/' + record.id)
.then(response => {
return response.json();
})
.then(resp => {
// console.log(resp.data.data);
//return resp.data.data
resolve(resp.data.data);
});
return response;
});
promises.push(promise);
}
Promise.all(promises).then(records);
不完全确定是否需要 response.json(),以及 .records 和 .data.data 应该放在哪里……但这可能有效:
const promises = [];
for (const record of response.records) {
promises.push(
http.get('/records/' + record.id)
.then(response => response.json()) //maybe?
.then(response => response.data.data)
)
}
Promise.all(promises).then(records => { /* do something */ } );
或使用地图:
const promises = response.records.map(record =>
http.get('/records/' + record.id)
.then(response => response.json()) //maybe?
.then(response => response.data.data)
)
Promise.all(promises).then(responseData => {/* do something */} );