Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript中的文件头-如何等待onloadend完成以继续进程_Typescript_File Header - Fatal编程技术网

Typescript中的文件头-如何等待onloadend完成以继续进程

Typescript中的文件头-如何等待onloadend完成以继续进程,typescript,file-header,Typescript,File Header,我正在onloadend内部调用API,但无法获得响应,因为我的进程在调用完成之前继续: async function InsertDataProjects(file3D: File, fileThumb: File, groupCod: string, projectName: string) { const uploadObj = async (file: File, projectName: string, objName: string, type: string) =>

我正在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, projectName: string, objName: string, type: string) => {
    let reader = new FileReader();

    let response: any;
    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) => {
            response = resp;
        });
    }

    return response;
}
我还尝试在onloadend之后调用API,但也出现了错误,因为我的有效负载未定义。 例如:

如何将s3.upload的响应返回到InsertDataProjects

let resp = await uploadObj(file3D, projectName, '/3d.gltf', 'base64_2');
let resp = await uploadObj(file3D, projectName, '/3d.gltf', 'base64_2');