使用setTimeOut做接口轮循(vue)(记录)

  • Post author:
  • Post category:vue


问题:因为数据较大的原因,后端处理的接口会需要我们多次调用来确定是否将数据存入成功,所有就需要做轮循,轮循接口,已达到确定保存成功并能获取

解决:可依靠定时器解决。

既然是轮循,很多人可能会想到使用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 版权协议,转载请附上原文出处链接和本声明。