node.js async.maplimit()将额外的参数传递给处理函数

时间:2014-12-19 01:57:02

标签: javascript node.js asynchronous

async.eachLimit(rowset.rows, 200, storeRow, postProcessingFunction);

function storeRow(row, cb) {...}

如何将额外的参数传递给storeRow()

这样的事情:

async.eachLimit(rowset.rows, 200, storeRow, rowset.param, postProcessingFunction);

function storeRow(row, param, cb) {...}

2 个答案:

答案 0 :(得分:1)

你可能不需要这样做。相反,你可以这样做:

function foo(param) {
  async.eachLimit(rowset, 200, storeRow, postProcessingFunction);
  function storeRow(row, cb) { /* this code uses param */ }
}

答案 1 :(得分:0)

使用Function.bind创建一个“curried”函数。

function storeRow(propertyFromRowset, row, cb){ /* ... */ };

async.eachLimit(
  rowset.rows,
  200,
  storeRow.bind(null,rowset.property),
  postProcessingFunction
);

有关理论的信息,请参阅Wikipedia:Currying;有关如何在Javascript中理解函数的详细信息,请参阅Function.prototype.bind