轮询:就是定时重复请求一个接口,比如,我们想要知道一个订单的状态,就需要轮训订单状态的接口,查询到我们想要的结果 (支付成功或者失败) 就终止轮询。
方法一:setInterval
这个方法我们一般都能想到,用法很简单,但是这种方法,如果我们忘记了清空定时器就会导致内内存栈溢出。
function checkOrderStatus() {
console.log(1);
}
const timer = setInterval(() => {
checkOrderStatus()
}, 1000)
// 退出的时候一定要清空
clearInterval(timer)
方法二:setTimeout + 递归
所以我们还可以使用setTimeout进行轮询,可以省掉清空定时器的步骤,特别适合异步请求中,在请求返回之后,重新设置setTimeout定时即可
function checking() {
setTimeout(() => {
// 假设 checkOrderStatus是一个异步函数
checkOrderStatus().then((res) => {
// 满足条件停止递归
if (res) {
//
} else {
checking()
}
})
}, 3000);
}
方法三:使用requestAnimationFrame模拟定时器
请参考我的这篇文章文章来源:https://www.toymoban.com/news/detail-602247.html
使用requestAnimationFrame模拟定时器setInterval_我有一棵树的博客-CSDN博客使用requestAnimationFrame模拟定时器setIntervalhttps://blog.csdn.net/qq_17335549/article/details/128089405文章来源地址https://www.toymoban.com/news/detail-602247.html
到了这里,关于javascript中轮询一个接口的方法,setInterval和setTimeout + 递归、requestAnimationFrame的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!