0
返回null我有以下功能功能在javascript
function calculateMFCC (wavFile, clipID) {
var audioData = loadAudioData(wavFile);
clipId = clipID;
passToWavReader(audioData);
}
功能loadAudioData(wavFile)应该使用Ajax加载wav文件,并返回结果作为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)函数中的变量audioData得到它应该得到的价值,但是当它返回到功能calculateMFCC(wavFile ,clipID)值audioData是未定义的,所以当它调用passToWavReader(audioData)时,脚本会中断。所以,calculateMFCC的audioData变量不知道从loadAudioData得到了什么值。
提示:哪个函数是你的return语句里面的? – nnnnnn
使用承诺https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise –
异步中的** A **。您正在尝试在呼叫返回之前使用该值。当你使用异步函数时,你必须以不同的方式思考,不管它们是否包含在*看起来*同步的其他函数中。 –