在内部节点异步方法中,我们将任务定义为“一个”或“两个”,如下例所示。有没有办法让文本动态化?
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}
});
答案 0 :(得分:2)
我同意@Castaglia您可能会通过提供有关您要执行的操作的更多详细信息而获益。也就是说,我将简单回答所说的问题。
是的,可以动态计算对象的键。这适用于任何对象,而不仅仅是您传递给async.parallel()
的对象。也许Node中最优雅的解决方案是使用新的ES2015功能:computed property names。
'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 shorthand method definition syntax,这使我们不必在对象文字上使用function
关键字进行方法定义。
或者,如果您不想使用这些ES2015功能,您可以执行以下操作:
'use strict';
var async = require('async');
function dynmaicAsync(fnOne, fnTwo) {
var fns = {};
fns[fnOne] = function { ... };
fns[fnTwo] = function { ... };
async.parallel(fns, function(err, results) { ... });
}