Я функции послефункция, возвращающая нуль в JavaScript
function calculateMFCC (wavFile, clipID) {
var audioData = loadAudioData(wavFile);
clipId = clipID;
passToWavReader(audioData);
}
Функция loadAudioData (WAVFile) необходимо загрузить файл WAV с помощью Ajax и возвращать результат как ArrayBuffer. Вот как это выглядит:
function loadAudioData(wavFile) {
var request = new XMLHttpRequest();
request.open('GET', wavFile, false);
//request.responseType = 'arraybuffer';
request.onload = function() {
var audioData = stringToArrayBuffer(request.response);
//passToWavReader(audioData);
return audioData;
}
request.send();
}
Когда я отладить сценарий, я вижу, что в loadAudioData (WAVFile) функционировать переменная аудиоданные получает значение, которое он должен получить, но тогда, когда он возвращается к функции calculateMFCC (WAVFile , clipID) значение audioData не определено, поэтому, когда он вызывает passToWavReader (audioData), скрипт прерывается. Таким образом, переменная audioData от calculateMFCC каким-то образом не получила значение от loadAudioData.
Подсказка: какая функция является вашим оператором возврата внутри? – nnnnnn
Используйте обещание https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise –
** ** ** в async. Вы пытаетесь использовать значение перед возвратом вызова. Вы должны думать по-другому, когда используете асинхронные функции, независимо от того, связаны они или нет в других функциях, которые * выглядят * синхронно. –