欢迎来到 侠客岛

一入江湖岁月催,代码人生共举杯

播放器问题

技术实现摘录

音频全局单例 + 请求竞态控制
// audio.js - 全局唯一 Audio 实例
let audioInstance = null
export const getAudio = () => audioInstance || (audioInstance = new Audio())

// music.js - playRequestId 递增丢弃过期请求
let playRequestId = 0
async function playFromQueue(index) {
  const rid = ++playRequestId
  stopAudio()
  loading.value = true
  const data = await fetchAPI({ type: 'json', ids: song.id })
  if (rid !== playRequestId) return  // 后面的请求已覆盖,丢弃本次
  audio.src = data.url
  audio.play()
}
SIGNATURE
错过了不该错过的人,那就是遗憾!
0 0 0 举报
复制成功