js轮询方法

很多时候我们会遇到使用轮询方法去处理一些逻辑,比如说扫码后轮询判断二维码是否被使用等情况。
以下是一个基于JavaScript编写的一个简单轮询方法:

  • 方法
    代码截图
// 轮询方法
function pollCode (fn, interval, timeout) {
	var endTime = Number(new Date()) + (timeout || 600000);
	interval = interval || 1000;
	var checkCondition = function (resolve, reject) {
		// 如果超时则停止轮询
		if (Number(new Date()) > endTime) {
			reject(new Error("轮询超时"));
			// 如果条件满足则停止轮询
		} else if (fn()) {
			resolve();
			// 否则继续轮询
		} else {
			setTimeout(checkCondition, interval, resolve, reject);
		}
	};
	return new Promise(checkCondition);
}
  • 调用方法
pollCode (function() {
    // 这里是你要轮询的条件判断
    // 返回 true 表示条件满足,停止轮询
    // 返回 false 表示条件未满足,继续轮询
    console.log('正在轮询...');
    return Math.random() < 0.1; // 示例条件:随机小于 0.1 时停止轮询
}, 2000, 10000) // 每隔2秒轮询一次,总共轮询10秒
.then(function() {
    console.log('轮询成功');
})
.catch(function(error) {
    console.error('轮询失败:', error);
});
  • 参数解说
    fn:一个函数,用于执行需要轮询的条件判断。如果条件满足则返回 true,否则返回 false
    interval:可选参数,表示轮询间隔的毫秒数,默认为 1000 毫秒。
    timeout:可选参数,表示轮询超时的毫秒数,默认为 2000 毫秒。
    在上述方法中,pollCode () 方法会每隔一定的时间(由 interval 参数指定)执行一次条件判断函数 fn,直到条件满足或者超过指定的超时时间(由 timeout 参数指定)为止。当条件满足时,返回一个 Promise 对象,then() 方法中的回调函数会被调用;如果超时未满足条件,则会抛出一个超时错误并进入 catch() 中的回调函数。
  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值