Javascript 当函数数组作为参数传递给另一个函数时,如何返回承诺?

Javascript 当函数数组作为参数传递给另一个函数时,如何返回承诺?,javascript,node.js,asynchronous,promise,Javascript,Node.js,Asynchronous,Promise,可以找到一个问题: 实现应用于调用的getInParallel函数 多个API并行调用。该函数接受一个 返回承诺的函数。函数应返回一个承诺 它应该解析为来自APICALL的结果数组 争论 例如,调用以下代码应打印[“第一个API调用!”,“第二个API调用!”]: let promise = getInParallel([() => Promise.resolve("First API call!"), () =>

可以找到一个问题:

实现应用于调用的
getInParallel
函数 多个API并行调用。该函数接受一个 返回
承诺的函数
。函数应返回一个
承诺
它应该解析为来自APICALL的结果数组 争论

例如,调用以下代码应打印
[“第一个API调用!”,“第二个API调用!”]

let promise = getInParallel([() => Promise.resolve("First API call!"),
                         () => Promise.resolve("Second API call!")]);
if(promise) {
  promise.then((result) => console.log(result)).catch((err) => console.log(err));
}
这是我的解决方案:

function getInParallel(apiCalls) {
  // extract function one by one from array
  // then return each function's Promise to 'rFunt' as Promise.all only accepts array, iterable of promises as an input
  let rFunt = apiCalls.map((funct) => {
    return funct()
  })
  return Promise.all(rFunt).then((res) => {
    return res
  })
}

let promise = getInParallel([() => Promise.resolve("First API call!"),
() => Promise.resolve("Second API call!")]);
if (promise) {
  promise.then((result) => console.log(result)).catch((err) => console.log(err));
}
module.exports.getInParallel = getInParallel;

有没有其他方法/概念来解决这个问题?

你的答案非常直截了当,也许是最简单的一个。
我将重写
getInParallel
,如下所示(通常我们需要类型检查,此处省略)

const parallel=funcs=>Promise.all(funcs.map(fn=>fn());

您当前的代码有什么问题需要帮助?仅供参考,
if(promise)
是不必要的,因为
getInParallel()
总是返回一个承诺。
.then((res)=>{return res})
也不是必需的,因为承诺已经解决了
res
@jfriend00我没有面临任何问题,但我想知道其他解决方法或替代方案!正如我在上一篇评论中所指出的,这段代码可以稍微清理一下,但这是执行此操作的基本方法。这里没有其他要添加的内容。