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我没有面临任何问题,但我想知道其他解决方法或替代方案!正如我在上一篇评论中所指出的,这段代码可以稍微清理一下,但这是执行此操作的基本方法。这里没有其他要添加的内容。