На самом деле это довольно просто, если вы планируете использовать async/await
. Концепция заключается в том, чтобы отправить свой JSON Synchronously
.
- Разделите полезную нагрузку
- Синхронно ожидайте, пока ваш сервер не даст ответ
- Обработка ответа (продолжить отклонение при возникновении ошибки, это нарушит цикл)
- Продолжить изменение индекса
Не проверял код, но, более или менее, он должен быть таким.
const x = [{...}] // assuming that x is your array of object
const sendByChunks = async (chunkSize) => {
return new Promise((resolve, reject) => {
let start = 0
let end = 0
while (start <= x.length) {
try {
end = (end + chunkSize) > x.length ? x.length : (end + chunkSize) // set the end index
const payload = x.slice(start, end) // slice the array
start = end
await postBatchData(payload) // send to your API
} catch (error) {
reject(`Error postBatchData from ${start} to ${end}`) // log something
}
resolve('Success')
}
})
}
sendByChunks(100)
.then(response => { // handle response (your resolve) })
.catch(error => { // handle error (your reject) })