当前位置: 首页 > 知识库问答 >
问题:

javascript - 在vue中的beforedestroy方法里执行异步代码操作dom报错?

仲浩歌
2024-07-17
beforeDestroy() {
  if (this.players.length) {
    this.delPlayer()
  }
},
methods: {
  delPlayer() {
    return new Promise((resolve, reject) => {
      if (!this.players.length) {
        resolve()
        return
      }
      for (const [index, item] of this.players.entries()) {
        item.player.stop().then(() => {
          document.getElementById(`video${index}`).remove();
          if (index + 1 === this.players.length) {
            resolve()
          }
        })
      }
    })
  }
}

image.png
如何在beforedestroy方法里执行异步代码操作dom?

共有1个答案

宗政深
2024-07-17

错误信息:你不能读取null上的属性remove。不就是你getElementById获取到的是null。

针对这个错误,一般是做容错,判断获取到dom了再进行后续的remove操作。

但这里是因为你在beforeDestroy中执行的,他都要Destroy注销了,你还删除他干嘛,vue会把他删掉的,不用你来操作了,你把相关的变量清空,定时器取消就行。

 类似资料:
  • 本文向大家介绍async/await让异步操作同步执行的方法详解,包括了async/await让异步操作同步执行的方法详解的使用技巧和注意事项,需要的朋友参考一下 一.前言 我们经常会遇到这样的麻烦事,多个函数按顺序执行,返回结果却不是我们预期的顺序,原因一般是由于异步操作引起的,所以呢,我们需要一种解决方案来处理这种问题,从而使得异步操作按照同步的方式来执行,这样我们就可以控制异步操作输出结果的

  • 问题内容: 在下面的代码中,我试图一次性进行多个(大约10个)HTTP请求和RSS解析。 我在需要访问和解析结果的URI数组上使用标准构造。 码: 我了解一次调用函数时,应该使用回调。但是,在此示例中,我唯一想到使用回调的方法是调用一个函数,该函数对被调用的次数进行计数,并且仅在被调用的次数与看起来很hacky 的次数相同时才继续。 所以我的问题是, 在node.js中处理这种情况的最佳方法 是

  • 本文向大家介绍JavaScript中 DOM操作方法小结,包括了JavaScript中 DOM操作方法小结的使用技巧和注意事项,需要的朋友参考一下 DM是(Document Object Model)的简称。 一.找元素 document.getElementById()    根据id选择器找,最多找一个; document.getElementsByName()   根据name找,找出的是

  • 我有一个带有Vaadin集成(v14)的Spring Boot项目。我希望我的应用程序做一些后台操作,并在基于Vaadin的前端上表示结果。为此,我有一个视图,它是用Vaadin Designer(.js)生成的聚合物模板,并连接到Java companion类。在这个视图中,我只是简单地添加了一个用以下监听器初始化的按钮: 我正试图访问文档中所说的UI。然而,当它被执行时,它只到达第一个“等待”

  • 本文向大家介绍python中aioysql(异步操作MySQL)的方法,包括了python中aioysql(异步操作MySQL)的方法的使用技巧和注意事项,需要的朋友参考一下 python异步IO初探 探索异步IO执之前,先说说IO的种类 1.阻塞IO最简单,即读写数据时,需要等待操作完成,才能继续执行。进阶的做法就是用多线程来处理需要IO的部分,缺点是开销会有些大。 2.非阻塞IO,即读写数据时

  • 是否可以调用一个异步方法,以便它从一个同步的方法异步运行?我不关心它挂起同步调用程序直到它返回,而是希望该方法被异步调用。