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

sil*_*ter 3 javascript node.js async.js

是否可以传递其他参数或参数 async.EachSeries

方法签名是: EachSeries(arr, iterator, callback)

我有一个方法将电子邮件收件人与邮件模板异步合并

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);
}
Run Code Online (Sandbox Code Playgroud)

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

谢谢

Mrc*_*ief 6

您可以使用.bind传入模板而不使用全局变量:

var mergeTemplate = function(template, recipients, callback){
    async.eachSeries(recipients, processMails.bind(processMails, template), callback);
};
Run Code Online (Sandbox Code Playgroud)

bind()方法创建一个新函数,在调用时,将其this关键字设置为提供的值,并在调用新函数时提供任何前面提供的给定参数序列.

因此processMails.bind(processMails, template)创建一个thisset为的新函数,processMails这个新函数的第一个参数是template.

这与processMails直接调用相同(但不那么冗长):

var mergeTemplate = function(template, recipients, callback){
    async.eachSeries(
      recipients, 
      function(){
         return processMails(template);
      }, 
      callback);
};
Run Code Online (Sandbox Code Playgroud)