问题描述
我正在onloadend内调用API,但是我无法获得响应,因为我的过程在调用完成之前就继续了:
async function InsertDataProjects(file3D: File,fileThumb: File,groupCod: string,projectName: string) {
const uploadobj = async (file: File,projectName: string,objName: string,type: string) => {
let reader = new FileReader();
reader.readAsDataURL(file);
reader.onloadend = async () => {
let base64 = reader.result;
let payload = {
name: projectName + objName,type: type,file: base64
}
await s3.upload(payload).then((resp) => {
console.log(resp);
});
}
}
try {
await uploadobj(file3D,projectName,'/3d.gltf','base64_2');
} catch (error) {
}
我试图在reader.onloadend之前声明一个变量,并在s3.upload响应中分配它,但是 这是不可能的,因为该过程在结束onloadend调用之前会继续
示例:
const uploadobj = async (file: File,type: string) => {
let reader = new FileReader();
let response: any;
reader.readAsDataURL(file);
reader.onloadend = async () => {
let base64 = reader.result;
let payload = {
name: projectName + objName,file: base64
}
await s3.upload(payload).then((resp) => {
response = resp;
});
}
return response;
}
我还尝试在onloadend之后调用API,但由于我的有效载荷未定义,它也出错了。 示例:
const uploadobj = async (file: File,type: string) => {
let reader = new FileReader();
let payload: any;
let response: any;
reader.readAsDataURL(file);
reader.onloadend = async () => {
let base64 = reader.result;
payload = {
name: projectName + objName,file: base64
}
}
// payload is undefined here
await s3.upload(payload).then((resp) => {
response = resp;
});
return response;
}
如何将s3.upload的响应返回给InsertDataProjects?
let resp = await uploadobj(file3D,'base64_2');
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)