Skip to main content

Promise相关

使用Promise 包装一个 延时函数

function delay(time:int):void{
return new Promise(resolve=>setTimeout(resolve, time))
}

// 使用
delay.then(()=>{
.../
})
async function delay(time:int){
await new Promise( resolve=>setTimeout(resolve, time) )
}

// 使用 延时5秒
await delay(5000)

PromiseAll 并发接口

// 创建上传任务列表
const upload_list = [
uploadFileApi(`${data.beDfsuInfo.md5}.dfsu`, data.beDfsuInfo.file), // 上传工程前 dfsu
uploadFileApi(`${data.afDfsuInfo.md5}.dfsu`, data.afDfsuInfo.file), // 上传工程后 dfsu
]

// 如果存在
if (data.projectRange.fileList.length > 0) {
data.projectRange.fileList.map((eachFile) => {
upload_list.push(uploadFileApi(`${data.projectRange.md5}${eachFile.ext}`, eachFile.file))
})
}

const file_upload_res_list = await Promise.all(upload_list)

// 检查是否上传成功
if (!file_upload_res_list.every((res) => res)) {
console.log("有文件上传失败")
console.log(file_upload_res_list)
} else {
console.log("所有文件上传成功")
}

包装FileReader()异步调用为Promise

async function getPngSize(file) {
let reader = new FileReader();
reader.readAsDataURL(file);

return new Promise(resolve => {
reader.onload = async () => {
let res = cpsImg.ReadPNGBase64(reader.result);
resolve(res);
};
});

// await promise;
}

img标签延时包装