问题:因为数据较大的原因,后端处理的接口会需要我们多次调用来确定是否将数据存入成功,所有就需要做轮循,轮循接口,已达到确定保存成功并能获取
解决:可依靠定时器解决。
既然是轮循,很多人可能会想到使用setInterval来做轮循,但setInterval有一个致命的问题,就是到达时间便会进行下一次调用,而不管上一次事件是否已经完成,这有可能导致任务队列堆积良多,而目的却早已实现。
建议用setTimeout来做轮循。
上代码:
data(){
return{
timmer:null
}
}
// 点击调用轮循事件
clickTim(){
if (this.timmer !== null) {
// 清除不为空的timmer定时器
clearTimeout(this.timmer)
}
this.Cycle()
}
}
// 轮循方法
Cycle() {
this.timmer = setTimeout(() => {
getAsyncReprintArticleCdnUrl({ url: this.createForm.content }).then(res => {
if (res.data.url) {
// 如果成功,清除定时器timmer,并做赋值操作,再return
this.timmer = null
this.articleContentSrc = res.data.url
this.iframeloading = true
return
} else {
// 如果失败,则继续下一次回调
this.Cycle()
}
})
}, 2000)
},
版权声明:本文为weixin_61285710原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。