相關(guān)問題前提:
最近在做一個 已知 audio 的 url 獲取 其 時長芒划,并且push 進(jìn)去數(shù)組的問題
上代碼:
if (fileType === 'audio') {
let audioDom = new Audio(url)
let _this = this
audioDom.addEventListener('loadedmetadata', function (_event) {
embeddedData.audio = {
id: fileUrl,
Extension: fileType.toUpperCase(),
fileExtension: fileType.toUpperCase(),
// 獲取音頻的長度
duration: Math.round(audioDom.duration)
}
fileInfo.audioTime = Math.round(audioDom.duration)
_this.embeddedFiles.push(embeddedData)
_this.$emit('uploadSuccess', fileInfo)
})
} else {
fileType === 'image' ? this.embeddedImages.push(embeddedData) : this.embeddedFiles.push(embeddedData)
this.$emit('uploadSuccess', fileInfo)
}
記錄一下:
1抡句、首先要常見一個 audio dom
2、然后 用 addEventListener('loadedmetadata', function(){})
算途,這個事件是說 等 這個audio 都加載完成了以后 ,就可以獲取到 audio的 相關(guān) 參數(shù)隘梨,比如說 duration值
3程癌、這一點需要注意:在 這個事件里面,數(shù)據(jù)是拿不出來的轴猎,所以 嵌莉,我就用 原本的一個全局的 數(shù)據(jù)push 進(jìn)去了,但是用的是 this.embeddedFiles.push(embeddedData)
捻脖,但是 報錯表示 this.embeddedFiles
不存在锐峭,是由于作用域的問題,所以要 先 let _this = this
可婶,再用 _this.embeddedFiles.push(embeddedData)
就可以了
ok 沿癞,僅此記錄