核心结论
可维护的音频播放队列应建立单一状态源,集中保存曲目列表、当前索引、播放策略、用户期望状态、媒体实际状态、加载序号和错误信息。HTMLAudioElement 的方法只负责发起动作,媒体事件负责确认事实;上一首、下一首、自动续播和错误跳过都必须经过同一个切歌入口,不能让多个事件处理器分别修改索引,否则快速操作时很容易重复切歌或跳过曲目。
底层机制
audio 与 video 都继承 HTMLMediaElement 的媒体能力。load() 会重新执行资源选择并重置部分状态;play() 返回 Promise,可能因自动播放限制、格式问题或资源错误而拒绝;pause()