#javascript #reactjs
#javascript #reactjs
Вопрос:
Я пытаюсь получить значение в объекте, полученном из onloadedmetadata
. Когда я консольно регистрирую весь объект audioDuration
, я могу видеть и получать доступ к содержащемуся значению. Когда я регистрирую в консоли точный элемент AudioDuration.length
, он возвращает undefined.
var audioDuration = {};
convertedAudio.onloadedmetadata = () => {
audioDuration.length = convertedAudio.duration
};
console.log (audioDuration) // displays object {length: 25.547755}
console.log (audioDuration.length) // displays undefined
Я хочу использовать значение AudioDuration.length
напрямую, а не весь объект.
Комментарии:
1. у вас есть опечатка, AudioDuration, но ваша переменная audioDuration, a не должна быть заглавной
2. Спасибо @Nonik. Я это исправил. Все та же проблема.
Ответ №1:
ваша проблема связана с тем, что значение audioDuration задается только в обратном вызове и консоли.журнал используется непосредственно после onloadedmetadata, поэтому консоль.журнал будет запущен до того, как будет установлено значение. Два способа исправить это, один из способов — сделать console.войдите в onloadmetadata. Другой способ — вернуть обещание и дождаться результата.
const audioDuration = {}
const getDuration = () => new Promise(resolve => {
convertedAudio.onloadedmetadata = () => {
resolve(convertedAudio.duration);
}
})
getDuration().then(l => { console.log(l); audioDuration.length = l; })
Ответ №2:
Попробуйте это
var audioDuration = {};
convertedAudio.onloadedmetadata = () => {
if(convertedAudio.duration!=undefined){audioDuration.length = convertedAudio.duration}
};
console.log (audioDuration) // displays object {length: 25.547755}
console.log (audioDuration.length) // displays idk, u see what it does since i can't replicated convertedAudio