在vue项目中引入语音播报,使用的科大讯飞语音接入,
具体思路为每次接收到语音信息后存入一个数组,然后监听这个数组,开始冲第一个索引播放,并且同时根据vuex getter 来动态删减数量
给audio绑定ended事件来执行播放完成后播放下一个
播放结束后,根据ended事件来确认如果数组内数量为0,则移除该事件并置状态为无播放状态,当数组开始变化时,重新开始执行此播放行为
这里遇到个小问题,当要播放的信息异常时,比如数组内移除了该索引的数据,但是仍然播放到这个时,就会报错
Uncaught (in promise) DOMException: Failed to load because no supported source was found.
解决办法:
判断视频的networkState,如果值等于3,则不播放,跳过
- Media.networkState; //0.此元素未初始化 1.正常但没有使用网络 2.正在下载数据 3.没有找到资源
相关代码如下