要求
函数接收两个函数为参数,一个返回boolean值的功能函数,第二个是功能函数返回true时需要执行的回调函数。
初始等待 1 秒后执行,不成功则增加 50%的等待时间,再执行功能函数。
function simplePoller(queryFn = () => { }, callback = () => { }) {
// 初始间隔时间(ms)
let baseTime = 1000;
// 等待时间的增长倍率
let timeRate = 1.5;
let timeHandler = (time) => {
setTimeout(() => {
let res = queryFn();
if (res === true) {
callback();
} else if (res === false) {
// 等待时间按倍率增加,向上取整,去除时间小数
time = Math.ceil(time * timeRate);
timeHandler(time);
} else {
console.error('queryFn 函数必须返回一个boolean值');
}
}, time)
}
timeHandler(baseTime);
}