lodash流和多个参数

时间:2016-07-11 10:44:26

标签: javascript functional-programming lodash partial-application

我将在lodash流程中添加2个函数:

function normalizedFormFields(fields) { // needs only 1 argument
    return _.mapValues( fields, function( value ) {
        return { 'content': value };
    } );
}

function mergedModelAndFormFieldss(model, normalizedFormFields) {
    return _.merge( {}, model, normalizedFormFields )
}

const execution = _.flow( normalizedFormFields, mergedModelAndFormFieldss )

const errorMessageBag = function( fields, model ) {
    return execution( fields, model ) // initiate flow with 2 arguments
}

正如您所看到的,第一个函数normalizedFormFields接受一个参数。第二个需要2:从前一个函数返回的值(这是流的正常行为),另一个是:model。

但是在errorMessageBag调用中,我使用2个参数启动流程。除了第一个函数的返回产品之外,如何使用第二个参数,第二个函数可用? 如您所见,问题是流中的第一个函数只需要一个参数。这是“咖喱”应该发挥作用的一种情况吗?请说明。

1 个答案:

答案 0 :(得分:2)

试试这个,应该有效:

function normalizedFormFields(fields) {
    return _.mapValues( fields, function( value ) {
        return { 'content': value };
    });
}

function mergedModelAndFormFieldss(model, normalizedFormFields) {
    return _.merge( {}, model, normalizedFormFields )
}

const errorMessageBag = function( fields, model ) {
    return _.flow(
        normalizedFormFields,
        mergedModelAndFormFieldss.bind(this, model)
    )(fields)
}