gpt4 book ai didi

javascript - 如何让代码在下面的 async/await 函数中等待?

转载 作者:行者123 更新时间:2023-11-30 15:05:18 24 4
gpt4 key购买 nike

我想在将图像上传到服务器之前调整图像大小(使用 Firebase):

api.uploadPhoto = async (file = {}, field = {}) => {
const canvas = document.getElementById('canvas')
const img = document.createElement('img')
const reader = new FileReader()
let fileToUpload

reader.onload = function (e) {
img.src = e.target.result
pica.resize(img, canvas).then(result => {
fileToUpload = pica.toBlob(result, 'image/jpeg', 90))
})
}
reader.readAsDataURL(file)

// run the code below only when reader.onload has finished

return await imageUpload.toFirebase(fileToUpload, field)
}

问题是 imageUpload.toFirebasereader.onload 之前运行。如何解决这个问题?

最佳答案

将上传移至回调...

api.uploadPhoto = async (file = {}, field = {}, callback) => {
const canvas = document.getElementById('canvas');
const img = document.createElement('img');
const reader = new FileReader();
let fileToUpload;

reader.onload = function (e) {
img.src = e.target.result;
pica.resize(img, canvas).then(result => {
fileToUpload = pica.toBlob(result, 'image/jpeg', 90));
});

reader.readAsDataURL(file);
callback(await imageUpload.toFirebase(fileToUpload, field));

}
};

关于javascript - 如何让代码在下面的 async/await 函数中等待?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45858434/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com