我有两个功能
async function convertToBase64(file) {
const fileReader = new FileReader();
fileReader.onload = () => {
const srcData = fileReader.result;
console.log('scrData: ', srcData); // result is correct
return srcData;
};
fileReader.readAsDataURL(file);
}
async function addData(values) {
const converted = await convertToBase64(values.file);
console.log(converted); // result undefined
await addDoc(collection(db, 'list'), {
image: converted,
});
}
我尝试过try...catch、async-await函数,但无论如何都找不到解决方案
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
convertToBase64()函数不会显式返回值,因此您提供的代码始终返回undefined。您可以更改该函数,使其返回一个Promise,一旦FileReader 已成功读取 base64 中的文件,并处理任何rejections 或发生的错误:const imgFileInput = document.getElementById("img"); imgFileInput.addEventListener("change", addData); function convertToBase64(file) { return new Promise((resolve) => { const fileReader = new FileReader(); fileReader.onload = () => { const srcData = fileReader.result; resolve(srcData); }; fileReader.onerror = (error) => { reject(error); }; fileReader.readAsDataURL(file); }); } async function addData() { try { const imgFile = imgFileInput.files[0]; const converted = await convertToBase64(imgFile); console.log(converted); } catch (error) { console.error("Error while converting to Base64:", error); } }