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();

如有疑问或更好的解决方式,欢迎各位巨佬留言指正。

posted @ 2021-01-19 23:15  zcookies  阅读(1140)  评论(0编辑  收藏  举报