node.async parallel : 我们可以创建动态文本来表示任务吗?
node.async parallel : can we create dynamic texts to denote tasks?
在节点异步方法中,我们将任务定义为 "one" 或 "two",如下例所示。有没有办法使该文本动态化?
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}
});
我同意 的观点,如果提供更多有关您尝试执行的操作的详细信息,您可能会从中受益。也就是说,我将简单地回答问题。
是的,可以动态计算对象的键。这适用于任何对象,而不仅仅是您传递给 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) { ... });
}
在节点异步方法中,我们将任务定义为 "one" 或 "two",如下例所示。有没有办法使该文本动态化?
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}
});
我同意
是的,可以动态计算对象的键。这适用于任何对象,而不仅仅是您传递给 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) { ... });
}