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

node.js async.maplimit() pass extra param to processing function

本文关键字:参数传递 处理函数 async js maplimit node      更新时间:2023-09-26
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) {...}

你可能不需要那样做。相反,您可以执行以下操作:

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

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

function storeRow(propertyFromRowset, row, cb){ /* ... */ };
async.eachLimit(
  rowset.rows,
  200,
  storeRow.bind(null,rowset.property),
  postProcessingFunction
);

参见 Wikipedia:Currying 了解理论和 Function.prototype.bind 了解如何在 Javascript 中引用函数的详细信息。