如图,为什么视频点播短时间内 dispose init会有这么多video标签?而且网络一直没有中断请求
我这边的需求是 鼠标移入200ms后init 移出就dispose
发现dispose经常无法移除掉
那就是没有做dispose操作,而是一直在init,只有播放器创建完成才能对播放器dispose ,而且只有播放器初始化成功才可以销毁,播放器提供的api都需要在播放器初始化成功之后才可以调用。你可以尝试监听播放器的ready,在ready之后dispose—此回答来自钉群”阿里云-VOD-视频点播-技术交流(进群先看公告)“
在视频点播中,每当您初始化(init)一个视频播放器时,它会创建一个视频标签(video tag)来承载视频内容并进行播放。当您调用dispose方法关闭当前的视频播放器时,相应的视频标签也会被释放。
如果在短时间内频繁地进行dispose和init操作,意味着您在不断地创建和释放视频播放器。这可能是因为您的应用程序对视频播放器的管理逻辑导致了这种行为,例如在用户界面中反复切换视频或重复初始化播放器。
另外,即使网络没有中断请求,频繁的dispose和init操作可能会导致视频播放器在初始化过程中发出多个请求,这可能会增加网络流量和服务器负载。
问题一:在视频点播中,dispose init可能会产生很多video标签,这是因为在初始化过程中,可能会尝试加载多个视频资源,并为每个视频资源创建一个video标签。如果视频资源加载失败,dispose init可能会尝试重新加载,这样就会产生更多的video标签。
至于为什么网络没有中断请求,可能是因为在初始化过程中,可能会尝试加载多个视频资源,即使其中一些资源加载失败,也不会立即停止请求,而是继续尝试加载其他资源。此外,网络连接可能会出现波动,但是在初始化过程中,可能不会立即发现网络连接中断,因此仍然会继续尝试加载视频资源。
问题二:在某些情况下,初始化(init)一个对象可能需要一些时间,特别是涉及到资源的加载、连接或配置等情况。如果你希望在初始化未完成时就执行对象的释放(dispose),可能会导致不稳定或错误的行为。因为对象可能还没有准备好正确执行释放操作,这可能导致资源泄漏或错误。
通常,建议在初始化完成之后再执行释放操作,以确保对象能够正确地释放资源。如果你需要在初始化过程中进行一些操作,可以考虑使用异步方法或事件来处理,以避免阻塞程序并确保对象初始化的正确性。
问题三:如果你希望在播放器初始化完成后才执行释放操作,可以考虑使用 Promise 来进行控制。你可以在初始化操作中返回一个 Promise,在初始化完成时 resolve 这个 Promise,然后在 resolve 的处理函数中执行释放操作。这样可以确保释放操作在初始化完成后才执行。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。