A safe polling hook for Vue 3 dashboards. Polling will never stop because of async errors.
npm install @amaoaaaaa/safe-polluseTimeoutPoll 封装,提供自动启动、立即回调、错误处理等功能。
bash
npm install @amaoaaaaa/safe-poll
`
使用
`ts
import { usePoll } from "@amaoaaaaa/safe-poll";
const { pause, resume } = usePoll(
async () => {
const res = await fetchData(); // 这里报错也没事
console.log(res);
},
3000,
{
onError(err) {
console.error("poll failed", err);
},
},
);
`
API
$3
注册一个安全轮询任务。
#### 参数
| 参数 | 类型 | 默认值 | 说明 |
| ---------- | ----------------------- | ---------------------------------------------- | ---------------- |
| fn | () => Awaitable | — | 轮询函数,每次轮询执行的操作 |
| interval | number | — | 轮询间隔,单位毫秒 |
| options | UsePollOptions | { immediate: true, immediateCallback: true } | 配置项 |
---
$3
| 属性 | 类型 | 默认值 | 说明 |
| ------------------- | ------------------------ | ------ | ------------------------------------------------------- |
| immediate | boolean | true | 是否在 hook 创建时立即启动轮询。如果为 false,需要手动调用 resume() 才会开始 |
| immediateCallback | boolean | true | 是否在启动轮询时立即执行一次回调。配合 immediate 使用,决定是否在初始化时立刻调用 fn() |
| onError | (err: unknown) => void | — | 当轮询函数抛出错误时的回调,用于统一处理异常,保证轮询不会中断 |
---
$3
* 返回 Pausable 对象(来自 VueUse):
`ts
interface Pausable {
/**
* 当前实例是否处于激活状态
* - true:轮询或定时器正在运行
* - false:已暂停
*/
isActive: Readonly>;
/**
* 暂停轮询 / 定时器
* 调用后 effect 将停止执行,直到 resume() 被调用
*/
pause: Fn;
/**
* 恢复轮询 / 定时器
* 调用后 effect 将继续按原间隔执行
*/
resume: Fn;
}
`
* 可通过 pause() 暂停轮询,通过 resume()` 恢复轮询。