【问题标题】:Adding parameters to a callback in Javascript在Javascript中向回调添加参数
【发布时间】:2015-06-05 09:27:00
【问题描述】:

我需要一种向回调方法添加额外参数的方法,该方法应具有某些服务的 API 文档给出的特定签名。

例如,回调应该有一个字符串类型的参数,但我想在参数中添加一个额外的 int。

我想到的唯一技巧就是像这样滥用“绑定”:

var callbackFunc = originalCallback.bind({extraParam: myInt}, theNeededString)

在回调中我可以得到这样的整数:this.extraParam

您还有其他提示或技巧吗?

【问题讨论】:

  • 你打算如何处理回调函数中的额外参数?这似乎有点无意义,因为回调函数可以引用父上下文的任何变量。只需在创建回调的“父”函数中声明该额外参数。示例:var a = 10; var callback = function(str) {console.log(a);}; a = 20;打回来(); - 它将记录 20。

标签: javascript callback closures bind


【解决方案1】:
var callbackFunc = function(theNeededString) { 
   originalCallbackind(theNeededString, myInt); 
};

【讨论】:

  • 更清楚地说,@Igor 的意思是您可以从 内部范围引用 外部范围 中的变量(如定义回调的函数) (就像回调本身。)
  • 另外,请参阅此问题了解更多信息:stackoverflow.com/questions/111102/…
【解决方案2】:

您可以使用函数内部的arguments 对象来获取额外的参数

function test(a){

    for(var i = 0; i<= arguments.length-1; i++) { 
        console.log(arguments[i])
    }
}

test(1,3,4,5)
 1
 3
 4
 5

希望对你有帮助

【讨论】:

    猜你喜欢
    • 2015-12-27
    • 2013-12-18
    • 1970-01-01
    • 2012-10-25
    • 2023-03-07
    • 1970-01-01
    • 2016-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多