收藏
回答

定时器无法清除的问题?

proCompound() {
    let that = this
    let json = JSON.parse(JSON.stringify(that.data.projectjson))
    console.log(json);
    textToWav({
      id: json.character.voiceId,
      text: json.ppt.pages[0].text,
      language: '中文',
  })
      .then((res) => {
        this.setData({
          syntheticVideo: false
        })
        this.checkStatusInterval = setInterval(() => {
          this.wavStatuss(res.data.taskId);
        }, 5000); // 60000毫秒即1分钟
       
      })
      .catch((err) => {
        Message.error(err);
      });}      //合成语音状态
  wavStatuss(params) {
    wavPath({
      taskId: params
    }).then((res) => {
      if (res.code == 200) {
       clearCheckStatusInterval(); // 当code为200时,停止定时器
        this.$message.success(res.msg);
      }
      if (res.code == 201) {
        clearCheckStatusInterval(); // 当code为201时,停止定时器
        this.$message.error(res.msg);
      }
    });
  },
  // 定义清理定时器的方法
  clearCheckStatusInterval() {
    if (this.checkStatusInterval) {
      clearInterval(this.checkStatusInterval);
      this.checkStatusInterval = null; // 清理后重置定时器引用
    }
  },   为什么200的时候没有清除定时器
回答关注问题邀请回答
收藏

3 个回答

  • 美兰十三
    美兰十三
    08-02

    这里少了this吧?????

    08-02
    有用
    回复
  • 一笑皆春
    一笑皆春
    08-02

    我记得没错的话,你不得用this.clearCheckStatusInterval()吗?

    还有就是checkStatusInterval 你需要页面参数里声明一下的

    08-02
    有用
    回复 5
    • 安城无殇
      安城无殇
      08-02
      data里面定义了   checkStatusInterval: null,   用了this.clearCheckStatusInterval()也不行
      08-02
      回复
    • 一笑皆春
      一笑皆春
      08-02回复安城无殇
      你这是uniapp还是原生小程序?
      08-02
      回复
    • 安城无殇
      安城无殇
      08-02回复一笑皆春
      原生小程序用的
      08-02
      回复
    • 一笑皆春
      一笑皆春
      08-02回复安城无殇
      原生小程序的话,data里边的参数,需要这样写this.data.xxxx
      08-02
      回复
    • 一笑皆春
      一笑皆春
      08-02
      所有的都是that.data.checkStatusInterval
      08-02
      回复
  • 那一抹笑😃 穿透阳光
    那一抹笑😃 穿透阳光
    08-02

    你确定调用方法成功了

    08-02
    有用
    回复 7
    • 安城无殇
      安城无殇
      08-02
      方法调用了,但是状态码返回201还一直在调用
      08-02
      回复
    • 安城无殇
      安城无殇
      08-02回复安城无殇
      第三个定时器正常要停止的
      08-02
      回复
    • 那一抹笑😃 穿透阳光
      那一抹笑😃 穿透阳光
      08-02回复安城无殇
      你的代码写法,都是错误的,你怎么调用了清除方法成功的
      08-02
      回复
    • 安城无殇
      安城无殇
      08-02回复那一抹笑😃 穿透阳光
      哪边错了,帮忙指正下,pc的项目我是这样做的,这个定时器清除是正常的,但是小程序里面就不行
      08-02
      回复
    • 那一抹笑😃 穿透阳光
      那一抹笑😃 穿透阳光
      08-02回复安城无殇
      proCompound() {
          let that = this
          let json = JSON.parse(JSON.stringify(that.data.projectjson))
          console.log(json);
          textToWav({
            id: json.character.voiceId,
            text: json.ppt.pages[0].text,
            language: '中文',
        })
            .then((res) => {
              that .setData({
                syntheticVideo: false
              })
              that .checkStatusInterval = setInterval(() => {
                that .wavStatuss(res.data.taskId);
              }, 5000); // 60000毫秒即1分钟
             
            })
            .catch((err) => {
              Message.error(err);
            });}      //合成语音状态

        wavStatuss(params) {
      let that  = this;

          wavPath({
            taskId: params
          }).then((res) => {
            if (res.code == 200) {
             that.clearCheckStatusInterval(); // 当code为200时,停止定时器
              that.$message.success(res.msg);
            }
            if (res.code == 201) {
              that.clearCheckStatusInterval(); // 当code为201时,停止定时器
              that.$message.error(res.msg);
            }
          });
        },
        // 定义清理定时器的方法
        clearCheckStatusInterval() {
          if (this.checkStatusInterval) {
            clearInterval(this.checkStatusInterval);
            this.checkStatusInterval = null; // 清理后重置定时器引用
          }
        }
      08-02
      回复
    查看更多(2)
登录 后发表内容