Skip to content

CHENGCHANGHU/group-request

Repository files navigation

@golden-tiger/group-request

Initiate a group request and set the retry logic and delay when catching request errors. When a request goes wrong, you need to set the retry attribute of the rejection reason to true.

Example

import { request } from '@golden-tiger/group-request';
const testGroup = Array(10)
  .fill(0)
  .map((_, i) => ({ id: i, data: Math.random().toFixed(3) }))
  .map((data) => async () => await fakeRequest(data));

const results = await request({
  group: testGroup,
  maxRetry: 3,
  retryDelay: 1000,
});
console.log(results);
// [
//   null,
//   { retry: false, id: 1, time: 793, data: '0.706' },
//   { retry: false, id: 2, time: 525, data: '0.021' },
//   null,
//   { retry: false, id: 4, time: 383, data: '0.072' },
//   { retry: false, id: 5, time: 199, data: '0.434' },
//   { retry: false, id: 6, time: 450, data: '0.123' },
//   null,
//   null,
//   null
// ]
// fakeRequest
async function fakeRequest({ id, data }) {
  const time = Math.floor(Math.random().toFixed(3) * 1000);
  await sleep(time);
  if (Math.random() < 0.8) {
    return Promise.reject({ retry: true, id, data, time });
  }
  return { retry: false, id, time, data };
}
// sleep
async function sleep(ms) {
  await new Promise(resolve => setTimeout(resolve, ms));
}

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published