代码之家  ›  专栏  ›  技术社区  ›  sunwarr10r

如何在Promise.all()中用函数传播数组并调用它们

  •  0
  • sunwarr10r  · 技术社区  · 6 年前

    让我们假设我有一个内部有可调用对象的数组:

    const arr = [ obj1, obj2, obj3, ... ]
    

    在我的例子中,这些对象也返回promise,并且可以通过以下方式执行 .doSomething() 例如:

    arr[0].doSomething()
    

    我需要把它们放在一起 Promise.all() 我想知道是否有一种使用扩频算子的方法 ... ?

    只是 Promise.all(arr) 不起作用,因为我得打电话 doSomething() 在每个物体上。类似于:

    Promise.all((...arr) => a.doSomething())
    
    1 回复  |  直到 6 年前
        1
  •  4
  •   Yousaf    6 年前

    Spread语法在这里没有帮助。

    你需要使用 .map() 方法来创建一个包含调用结果的新数组 .doSomething() 在每个元素上 arr 阵列。然后,应将此新数组传递给 Promise.all

    const transformedArr = arr.map(o => o.doSomething());
    Promise.all(transformedArr);
    

    或者你可以一行完成

    Promise.all(arr.map(o => o.doSomething()))