3

追加の引数またはパラメータをに渡すことは可能ですか?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);
}

「ダーティ」なグローバル変数を使用せずにテンプレートをパススルーする必要があります...これは可能ですか?可能であれば、どのように実行しますか?

ありがとう

4

1 に答える 1

6

.bindグローバル変数を使用せずにテンプレートを渡すために使用できます。

var mergeTemplate = function(template, recipients, callback){
    async.eachSeries(recipients, processMails.bind(processMails, template), callback);
};

このbind()メソッドは、呼び出されたときにthisキーワードが指定された値に設定され、新しい関数が呼び出されたときに指定された引数の前に指定された一連の引数を持つ新しい関数を作成します。

に設定された新しい関数processMails.bind(processMails, template)を作成し、この新しい関数の最初の引数はです。thisprocessMailstemplate

processMailsこれは、次のように直接呼び出すのと同等です (ただし、冗長ではありません) 。

var mergeTemplate = function(template, recipients, callback){
    async.eachSeries(
      recipients, 
      function(){
         return processMails(template);
      }, 
      callback);
};
于 2013-10-29T21:18:01.750 に答える