我有一个promise函数,该函数接收来自rows数组到远程服务器的一行。
const post = (row) => new Promise(resolve=>
{ //do post then,
resolve(response.data);
}
因此,我想创建一个遍历数组的函数,并以恒定大小的批次为每个元素执行post
。在执行下一个批次之前,应彻底解决当前批次。我该如何实现?
答案 0 :(得分:-1)
可以使用Promise.all
进行批处理,使用await
进行解析:
const post = (row) => new Promise(resolve => {
setTimeout(
() => resolve(row.id), //for demo purpose
1000);
})
const rows = [{
id: 1
}, {
id: 2
}, {
id: 3
}, {
id: 4
}, {
id: 5
}, {
id: 6
}, {
id: 7
}];
const execute = async (batchSize) => {
let currentPtr = 0;
while (currentPtr < rows.length) {
const results = await Promise.all(
rows.slice(currentPtr, currentPtr + batchSize)
.map(row => post(row))
)
console.log(results);
currentPtr += batchSize;
}
}
execute(2);