javascript在回调函数中赋值变量返回未定义
我有一个简单的脚本来播放音频,如:javascript在回调函数中赋值变量返回未定义,javascript,Javascript,我有一个简单的脚本来播放音频,如: var audio = new Audio(music) var music_duration audio.addEventListener('loadedmetadata', function() { var duration = audio.duration console.log(duration) music_duration = d
var audio = new Audio(music)
var music_duration
audio.addEventListener('loadedmetadata', function() {
var duration = audio.duration
console.log(duration)
music_duration = duration
})
console.log("checking duration")
console.log(music_duration)
此处music\u duration
返回未定义的值
而duration
内部addEventListener
给出音乐的持续时间
我是javascript新手。。。这里怎么了
console.log("checking duration")
console.log(music_duration)
将在发出loadedmetadata事件之前执行
您可以通过以下方式检查编辑脚本:
var audio = new Audio(music)
var music_duration
audio.addEventListener('loadedmetadata', function() {
console.log('here')
var duration = audio.duration
console.log(duration)
music_duration = duration
})
console.log('there')
console.log("checking duration")
console.log(music_duration)
您将看到
在这里之前打印了,
,这可能是异步调用。需要等待响应。解决方案是什么?重复的问题详细说明了问题的原因,并解释了此机制如何工作以及您需要做什么。你不可能得到比这个问题已经存在的答案更好的解释。你还应该检查“运行到完成保证”原则什么是解决方案???@aryan您可以将回调后需要执行的代码移动到回调本身中,或者在另一个函数中,您只是描述症状,而没有说明原因。异步控制流和运行到完成保证是导致这种行为的原因。