【发布时间】:2014-06-17 17:23:25
【问题描述】:
我正在尝试创建一个函数,该函数返回一个包含 n 个元素的数组,它们都是相同的函数(此数组稍后将用于使用 async 并行调用这些函数) .
我可以轻松地遍历一个数组并将函数添加到每个元素,但想知道我是否可以在一行中使用map:
//the function to point to
var double = function(x) {
return x*2;
};
//this function will create the array - just a filler for a one-liner
var createConsumersArray = function(numOfConsumers) {
var consumers = (new Array(2)).map(function(x){return double;});
return consumers;
};
var t = createConsumersArray(2);
console.log(t); //prints [,]
console.log(t[1](2)); //TypeError: Property '1' of object , is not a function
如果我用常量预先填充数组,map 可以工作,即:
var x = [1,2,3];
console.log(x.map(function(x){return double;})); //prints [ [Function], [Function], [Function] ]
console.log(x[1](2)); //prints 4
如何以最短的方式用相同的函数填充数组?
【问题讨论】:
-
数学和其他 cpu-bound 任务在 nodeJS 或浏览器中都不是异步的。
-
我正在使用
async.parallel模拟异步行为,但这些可以根据需要运行无关的线程或进程。
标签: javascript arrays