use*_*745 12 javascript node.js async.js
async.map的签名是map(arr,iterator,callback)(https://github.com/caolan/async#map)
我有一个var context //object
,我需要将它传递给迭代器.我该怎么做呢 ?
rob*_*lep 23
您可以通过两种方式使用bind:
iterator.bind(context)
Run Code Online (Sandbox Code Playgroud)
这将context在迭代器函数中提供this.
另一种方法是创建部分函数:
iterator.bind(null, context)
Run Code Online (Sandbox Code Playgroud)
这将context作为迭代器函数的第一个参数.因此,而不是迭代器签名iterator(item, callback),它变成了iterator(context, item, callback).
简单演示:
// first:
async.map([1, 2, 3], function(item, callback) {
callback(null, item * this.mult);
}.bind({ mult: 5 }), function(err, results) {
console.log('R', results);
});
// second:
async.map([1, 2, 3], function(ctx, item, callback) {
callback(null, item * ctx.mult);
}.bind(null, { mult: 5 }), function(err, results) {
console.log('R', results);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5761 次 |
| 最近记录: |