Skip to content

rollHelper

rollCreator

轮询工具函数,很多场景需要循环间隔请求数据,比如轮询检查登录状态,轮询检查订单状态等。这个函数保证上一个 promise 完成后再执行下一个 promise,始终保持执行的任务只有一条。

ts
const options = {
  rollTime: POLL_CONTROL?.POLL_INTERVAL_TIME,
  rollErrorMaxTimes: POLL_CONTROL?.MAX_ERROR_ROLL_TIMES,
  rollWhenError: true,
};
// 轮询检查登录状态
const stopCheckLogin = rollCreator(async () => {
  const result = await this.eventSourceService.checkIsLoginMessage(req);
  sub.next(result);
  return { isContinue: true, status: result.data.status };
}, options)();
// 停止轮训
stopCheckLogin();