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)
我需要的是在不使用"脏"全局变量的情况下通过模板...这是可能的,如果是这样,怎么样?
谢谢
您可以使用.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)
| 归档时间: |
|
| 查看次数: |
2518 次 |
| 最近记录: |