Javascript - 向回调函数添加更多参数

标签 javascript callback asynccallback

我正在调用一个需要回调函数作为参数的异步函数。

这是 JavaScript 代码:

for(i in array) 
{
    var item = array[i];
    functionToCall(item[i][1], 50, function(a, b)
    {
        alert(a + b);
    });
}

我无法编辑 functionToCall 函数。我想要做的是在回调函数中使用“item”变量,如下所示。

for(i in array) 
{
    var item = array[i];
    functionToCall(item[i][1], 50, function(a, b, c)
    {
        alert(a + b + c);
    }, item);
}

但是这段代码不能正常工作。我不能只在函数内使用“item”,因为它始终使用数组中的最后一项。

那么我该怎么做呢?

最佳答案

您可以在函数内使用 item,但您需要“捕获”它,这样您就不会每次都使用数组的最后一个元素。

for(var i = 0, l = array.length; i < l; ++i) { // better than for .. in
    var item = array[i];
    (function(item, i){
      functionToCall(item[i][1], 50, function(a, b) // do you really re-index item with the same index?
      {
          alert(a + b);
      });
    })(item, i);
}

关于Javascript - 向回调函数添加更多参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7209306/

相关文章:

c - 将 int 传递给 C 回调

javascript - NodeJS Async - 将参数传递给回调

javascript - 使用 Node.js 回调的次数较少

javascript - 如何从 Protractor 脚本中调用 AutoIt 函数?

javascript - 在c#中打开网页并等待jquery更新值

javascript - 如何使用浏览器并行加载但仍然使用 RequireJS 保持脚本的顺序

mysql - 我如何格式化 mysql 查询以利用异步/ promise ?

javascript - 我如何从谷歌地图信息窗口调用 Angular2 函数?

javascript - Mongoose 模块 (NodeJS) 中的 Schema.pre

javascript - Node.js - 跳出回调函数并在父函数中返回 true/false