javascript中返回null的函数
我有以下功能javascript中返回null的函数,javascript,Javascript,我有以下功能 function calculateMFCC (wavFile, clipID) { var audioData = loadAudioData(wavFile); clipId = clipID; passToWavReader(audioData); } 函数loadAudioData(wavFile)应该使用Ajax加载wav文件,并将结果作为arraybuffer返回。这就是它的样子: function loadAudioData(wavFile) { v
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中获取值。问题在于XMLHttpRequest不会立即响应。您需要添加一个回调。尝试:
function calculateMFCC (wavFile, clipID) {
loadAudioData(wavFile, function(audioData) {
clipId = clipID;
passToWavReader(audioData);
});
}
function loadAudioData(wavFile, callback) {
var request = new XMLHttpRequest();
request.open('GET', wavFile, false);
//request.responseType = 'arraybuffer';
request.onload = function() {
var audioData = stringToArrayBuffer(request.response);
//passToWavReader(audioData);
callback(audioData);
}
request.send();
}
提示:返回语句在哪个函数中?在异步中使用承诺a。您正在尝试在调用返回之前使用该值。在使用异步函数时,无论它们是否包含在其他看起来是同步的函数中,都必须有不同的想法。@nnnnnn哦,谢谢。我没有想到这一点。