如何解决创建一个包含多个函数的数组
如何创建这样的数组:
[foo(1,3),foo(5,7)]
使用 Array.map
放入 node.js 中的 Promise.all
函数?
示例:
const foo = [1,2,3]
function increment(n) {
console.log(n + 1)
}
Promise.all(
foo.map(n => {
return increment(n)
})
)
预期输出:
2
3
4
解决方法
您的示例只是在 increment 函数和 return 语句中缺少 async
关键字。
添加 async
将返回一个 promise,而您的 foo.map 将返回一个 promise 数组。
例如:
const foo = [1,2,3]
async function increment(n) {
return n + 1;
}
const arrayOfPromises = foo.map(n => {
return increment(n);
})
console.log("arrayOfPromises",arrayOfPromises)
Promise.all(arrayOfPromises).then((values) => {
console.log(values);
});
输出:
arrayOfPromises [ Promise { 2 },Promise { 3 },Promise { 4 } ]
[ 2,3,4 ]
,
如果要将函数存储在带参数的数组中,可以使用 bind。
function foo(a,b) {
return a + b;
}
const arr = [foo.bind(null,1,2),foo.bind(null,4,2)]
const result = arr.map(f => f());
// result should be [3,6]
使用 REPL 进行演示:
> function foo(a,b) { return a+b; }
undefined
> foo(1,2)
3
> const arr = [foo.bind(null,2)]
undefined
> arr
[ [Function: bound foo],[Function: bound foo] ]
> arr.map(f => f());
[ 3,6 ]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。