我正在尝试创建一个最小的例子,我可以完成上面描述的内容。为此,这是我尝试一个最小的例子,最后我想在输出中看到
负1为-1
加2中的一个是3
这是我的代码。
var async = require('async');
var i, args = [1, 2];
var names = ["negative", "plusOne"];
var funcArray = [
function negative(number, callback) {
var neg = 0 - number;
console.log("negative of " + number + " is " + neg);
callback(null, neg);
},
function plusOne(number, callback) {
setTimeout(function(number, callback) {
var onemore = number + 1
console.log("plus one of " + number + " is " + onemore);
callback(null, onemore);
}, 3000);
}];
var funcCalls = {};
for (i = 0; i < 2; i++) {
funcCalls[names[i]] = function() {
funcArray[i].apply(this, args[i]);
};
}
async.parallel(funcCalls, function(error, results) {
console.log("Parallel ended with error " + error);
console.log("Results: " + JSON.stringify(results));
});
请注意,我也将命名对象传递给async.parallel。传递数组(并完全忘记名称)也可以作为我的答案,但我更感兴趣的是传递这样的对象。
有关实现目标的任何想法?
答案 0 :(得分:14)
为什么不bind
初始值?然后你会有这样的事情:
async.parallel([
negative.bind(null, -1),
plusOne.bind(null, 3)
], function(err, res) {
console.log(err, res);
});
当然,您可以使用各种参数生成列表。这只是为了给出简化方法的概念。
答案 1 :(得分:3)
相反,您也可以使用async.apply
async.parallel(
[
async.apply(negative, -1), //callback is automatically passed to the function
async.apply(positive, 3)
],
(error, results) => {
console.log(error, results);
})