收藏
回答

某个页面,需要进行多个wx.request取数,然后合并数组。这个如何实现?

有人说用promise.all。我不太懂,promise看的云里雾里的。请教一下,这个应该怎么写?


回答关注问题邀请回答
收藏

2 个回答

  • 老张
    老张
    2021-08-09

    不懂promise基本写不了小程序。

    死磕吧。

    2021-08-09
    有用 2
    回复 2
    • 清心.
      清心.
      2021-08-09回复安逸
      2021-08-09
      回复
    • 郭子
      郭子
      2021-08-09
      好吧
      2021-08-09
      回复
  • 微盟
    微盟
    2021-08-21

    参考以下代码,主要使用 async/ await 和 array.reduce 方法

    // 模拟4个异步方法,返回数组
    var api_1 = new Promise((resolve, rejcet)=> {
        const res = [100, 101, 102];
        setTimeout(() => {
            resolve(res);
        }, 100);
    });
    
    
    var api_2 = new Promise((resolve, rejcet)=> {
        const res = [200, 201, 202];
        setTimeout(() => {
            resolve(res);
        }, 100);
    });
    
    
    var api_3 = new Promise((resolve, rejcet)=> {
        const res = [300, 301, 302];
        setTimeout(() => {
            resolve(res);
        }, 100);
    });
    
    
    var api_4 = new Promise((resolve, rejcet)=> {
        const res = [400, 401, 402];
        setTimeout(() => {
            resolve(res);
        }, 100);
    });
    
    
    const apiArray = [api_1, api_2, api_3, api_4];
    
    // 使用 async/await 和 reduce 方法,得出最终结果
    const data = await apiArray.reduce(async (prevValue, currentValue, index) => {
        const prevRes = await prevValue;
        const currentRes = await currentValue;
        return [].concat( prevRes,currentRes);
      }, []);
    
    
      console.log(data)
      
    
    2021-08-21
    有用
    回复
登录 后发表内容