node.async parallel:我们可以创builddynamic文本来表示任务吗?

在节点asynchronous方法中,我们将任务定义为“one”或“two”,如下例所示。 有没有办法使文本dynamic?

var async = require("async"); async.parallel({ one: function(callback){ setTimeout(function(){ callback(null, 1); }, 200); }, two: function(callback){ setTimeout(function(){ callback(null, 2); }, 100); } }, function(err, results) { console.log(results); // results is now equals to: {one: 1, two: 2} }); 

我同意@Castaglia ,你可能会提供更多关于你正在做的事情的细节。 这就是说,我只是简单地回答这个问题。

是的,可以dynamic地计算对象的关键字。 这适用于任何对象,而不仅仅是传递给async.parallel() 。 也许Node中最优雅的解决scheme是利用新的ES2015function: 计算属性名称 。

 'use strict'; const async = require('async'); function dynmaicAsync(fnOne, fnTwo) { async.parallel({ [fnOne](callback) { ... }, [fnTwo](callback) { ... } }, (err, results) => console.log(results)); } dynmaicAsync('un', 'deux'); // { un: 1, deux: 2} 

上面的例子也使用了ES2015的简写方法定义语法 ,这使我们不必在对象文字上使用function关键字来定义方法。

或者,如果您不想使用这些ES2015function,则可以执行如下操作:

 'use strict'; var async = require('async'); function dynmaicAsync(fnOne, fnTwo) { var fns = {}; fns[fnOne] = function { ... }; fns[fnTwo] = function { ... }; async.parallel(fns, function(err, results) { ... }); }