繁体   English   中英

同步批量执行 promise javascript

[英]Execute promise in synchronous batches javascript

我有一个 promise function 从行数组接收一行到远程服务器。

const post = (row) => new Promise(resolve=>
    {    //do post then,
         resolve(response.data);
    }

所以,我想创建一个 function 遍历数组并以恒定大小的批次为每个元素执行post 在执行下一个批次之前,当前批次应该完全解决。 我怎样才能做到这一点?

可以使用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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM