拼接两个异步函数的返回值

1、需求

两个异步回调函数分别返回各自的数组,要把2个数组拼接为1个

例如:

// 异步函数 getResult  
const getResult = async (value) => {   
    try {  
       const res = await getResultList(value); // 假设 getResultList 返回一个Promise,解决后得到一个数组  
       return res;  
    } catch (error) {  
       return []; // 如果出错,返回一个空数组  
    }  
};  
  
// 异步函数 getPoint
const getPoint = async (value) => {  
    try {  
        const res = await getPointList(value);
        return res;  
    } catch (error) {  
        return []; 
    }  
};  

2、解决

在哪个时机获取返回值呢?最佳方式就是使用promise

// 使用 Promise.all 来等待两个异步函数完成,并拼接它们的返回数组  
async function getCombinedResult(value) {  
    try {  
        // 同时调用 getResult 和 getPoint,并等待它们的结果  
        const resultArray = await Promise.all([getResult(value), getPoint(value)]); 
        const combinedArray = [].concat(...resultArray);  
        return combinedArray;  
    } catch (error) {  
        // 如果任何一个Promise失败,这里会捕获到错误  
        console.error('An error occurred:', error);  
        return [];   
    }  
}  
  
// 使用 getCombinedResult 函数  
getCombinedResult('someValue').then(combinedResult => {  
    console.log(combinedResult); // 输出拼接后的数组  
}).catch(error => {  
    console.error('Error fetching combined result:', error);  
});

3、总结拓展

总结:平时学习知识点时,知道异步解决方案Promise,出现“提笔忘字”的情况,还是因为没有熟练掌握,可以多刷LeetCode题库,同时工作时多思考多复盘

回顾promise相关知识点
① 什么是promise?

一种异步解决方案,用来解决回调地狱(也叫回调金字塔)

其实是一个构造函数,自己身上有all、reject、resolve这几个方法,原型上有then、catch等方法。

② 什么是回调地狱?

回调函数中嵌套回调函数,可读性差,不好维护

//回调地狱案例
asyncFunc1(function(result1) {
  asyncFunc2(result1, function(result2) {
    asyncFunc3(result2, function(result3) {
      // ...
    });
  });
});

用promise.all就能很好的解决上述问题

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值