Я открываю файл для чтения содержимого примерно так:
convertBlobToBase64(blob){
var convertPromise = new Promise(function(resolve, reject){
var fileReader = new FileReader();
fileReader.onload = function() {
var dataUrl = this.result;
var base64 = dataUrl.split(',')[1];
resolve(base64);
};
fileReader.readAsDataURL(blob);
});
return convertPromise;
}
Затем я вызываю эту функцию и передаю данные результата, когда она разрешается:
myFunction(audioFile){
var to64 = this.convertBlobToBase64(audioFile);
to64.then(function(base64Val){
var nextPromise = postCall();
nextPromise.then(//stuff);
return nextPromise;
});
return to64;
}
Однако, когда я вызываю myFunction, он немедленно возвращает разрешенное обещание, которое включает преобразованные данные из convertBlobToBase64
, а не неразрешенное обещание, которое должно ожидаться на nextPromise
, как и ожидалось.
Вместо этого, myFunction's .then вызывается немедленно и завершается ошибкой, так как не содержит правильных данных. Я неправильно понимаю функцию Promise?