javascript知识点-等待多个异步任务结果
记录知识点:
最近遇到一个问题,已经解决。
问题大致如:
1.一个H5页面展示,需要等待多个接口都执行后,才能将其显示。
2.nodejs 拉取一个服务器中多个文件,并上传到另一个服务器中。
最普通的方式:
第一个问题:先触发一个接口,然后在其回调函数中执行下一个接口,依次类推,当所有接口执行完后,展示页面。
第二个问题:先一条条的拉取文件,然后在一条条的上传到服务器。
问题:javascript语言的一特点:单线程。那么有某有办法让其同时执行,易维护呢?
博主这么解决的:
//举例一下,第二个问题解决方式
//下载文件方法
async downLoadFile(taskid){
const resp = await http.... //拉取文件
return await this.uploadFile(resp)
}
//上传文件方法
async uploadFile(result){
return await ... //上传到服务器
}
//开始
async start(){
//定义一个任务列表,n条文件需要拉取并上传。
const task = [1,2,3,...,n];
const asynctask = [];//需要处理的任务
const result = []; //处理结果
task.forEach((item)=>{
asynctask.push(this.downLoadFile(item))
})
await Promise.all(asynctask).then((values)=>{
values.forEach((item)=>{
result.push(item);
})
})
return result;
}
//启动
await this.start();
如有疑问或更好的解决方式,欢迎各位巨佬留言指正。