是否可以将其他参数或参数传递给async.EachSeries
方法签名为:EachSeries(arr, iterator, callback)
我有一个方法可以将电子邮件收件人与邮件模板async
合并var mergeTemplate = function(template,recipients,callback){
async.EachSeries(recipients,processMails,callback);
};
var processMails = function(template,singleRecipient,callback){
//...this would contain an async.waterfall of tasks to process the mail
async.waterfall(tasks,callback);
}
我需要的是在不使用“脏”全局变量的情况下通过模板... 这是可能的,如果是的话,怎么样?
由于
答案 0 :(得分:6)
您可以使用.bind
传递模板而不使用全局变量:
var mergeTemplate = function(template, recipients, callback){
async.eachSeries(recipients, processMails.bind(processMails, template), callback);
};
bind()
方法创建一个新函数,在调用时,将其this
关键字设置为提供的值,并在调用新函数时提供任何前面提供的给定参数序列。 / p>
因此processMails.bind(processMails, template)
创建了一个新函数,this
设置为processMails
,此新函数的第一个参数为template
。
这与直接调用processMails
完全相同(但不那么冗长):
var mergeTemplate = function(template, recipients, callback){
async.eachSeries(
recipients,
function(){
return processMails(template);
},
callback);
};