【问题标题】:Passing more parameters into callback function将更多参数传递给回调函数
【发布时间】:2016-02-25 22:57:00
【问题描述】:

我使用 lodash _.forIn,它有一个带键和值的回调。

_.forIn({...}, callback);

function callback(key, value) {...}

有没有办法将第三个参数传递给该函数?

【问题讨论】:

  • 第三个参数你想做什么?
  • 我有 2 个对象要迭代和更改,但更改需要稍有不同。
  • 您可以向其添加另一个参数,但是它将依赖 lodash _.forIn 使用额外的参数调用您的函数。

标签: javascript parameters callback parameter-passing lodash


【解决方案1】:

您可以使用HOF(高阶函数)来避免编写具有几乎相同主体的单独回调。

function createCallback(yourParameter){
    return function(key, value){
        if(yourParameter === 'Something'){
           //doSomething different;
        } else if(yourParameter === 'Something else'){
           //doSomethingElse
        }
    }
}

var cb1 = createCallback('Something');
var cb2 = createCallback('Something else');

_.forIn({...}, cb1);
_.forIn({...}, cb2);

【讨论】:

  • 这非常接近我的需要,但是有没有办法直接传递参数而不使用 if?
  • 你可以用yourParameter做任何你想做的事情,在我的例子中我只是根据它的值来做一些不同的事情,但是你可以随意使用参数。
【解决方案2】:

为此使用partial()

function log() {
    console.log(arguments);
}

var func = _.partial(log, 'hello');

func('world');
// → [ "hello", "world" ]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-28
    • 2011-10-05
    • 1970-01-01
    相关资源
    最近更新 更多