是否可以将其他参数传递给async.eachSeries

时间:2013-01-11 15:36:04

标签: javascript node.js async.js

是否可以将其他参数或参数传递给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);
}

我需要的是在不使用“脏”全局变量的情况下通过模板... 这是可能的,如果是的话,怎么样?

由于

1 个答案:

答案 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);
};