Javascript 如何清除API响应中状态更改后的间隔?
假设我有一个Javascript 如何清除API响应中状态更改后的间隔?,javascript,reactjs,setinterval,Javascript,Reactjs,Setinterval,假设我有一个checkStatus()方法,该方法在对端点的响应成功后触发。在这里面有一个setInterval,如下所示: checkStatus() { setInterval(() => { client .query({ query, variables, }) .then(res => { if (res.status) {
checkStatus()
方法,该方法在对端点的响应成功后触发。在这里面有一个setInterval
,如下所示:
checkStatus() {
setInterval(() => {
client
.query({
query,
variables,
})
.then(res => {
if (res.status) {
console.log("FINISHED!");
}
});
}, 3000);
}
基本上,我每3秒钟查询一个端点。一旦res.status
变为true
,我想清除间隔。组件仍然存在,尚未卸载
如何实现这一点?基本上,您需要为
setInterval
函数指定一个值,并将其清除到回调中:
checkStatus() {
const intervale = setInterval(() => {
client
.query({
query,
variables,
})
.then(res => {
if (res.status) {
console.log("FINISHED!");
clearInterval(intervale)
}
});
}, 3000);
}
只需清除检查条件中的间隔
例如:
checkStatus() {
const interval = setInterval(() => {
client
.query({
query,
variables,
})
.then(res => {
if (res.status) {
console.log("FINISHED!");
clearInterval(interval)
}
});
}, 3000);
}
您需要首先存储由setInterval返回的引用,并将其传递给clearInterval以清除它。例如,将引用存储在变量ref-
checkStatus() {
const ref = setInterval(() => {
client
.query({
query,
variables,
})
.then(res => {
if (res.status) {
clearInterval(ref);
console.log("FINISHED!");
}
});
}, 3000);
}
为间隔分配一个变量,并根据条件清除间隔
this.interval = setInterval(() => {
client
.query({
query,
variables,
})
.then(res => {
if (res.status) {
console.log("FINISHED!");
clearInterval(this.interval)
}
});
}, 3000);
checkStatus() {
this.interval()
}
使用clearInterval()