Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript thunk和函数curry是一样的吗?_Javascript_Currying_Thunk - Fatal编程技术网

Javascript thunk和函数curry是一样的吗?

Javascript thunk和函数curry是一样的吗?,javascript,currying,thunk,Javascript,Currying,Thunk,当我学习thunk时,我认为它们就像函数咖喱。为什么叫thunk 砰 功能咖喱 function multiply(a, b, c) { return a * b * c; } function multiply(a) { return (b) => { return (c) => { return a * b * c } } } 不,他们完全不同。两者都可能是函数,但仅此而已。A不接受任何参数,因此

当我学习thunk时,我认为它们就像函数咖喱。为什么叫thunk

功能咖喱

function multiply(a, b, c) {
    return a * b * c;
}

function multiply(a) {
    return (b) => {
        return (c) => {
            return a * b * c
        }
    }
}

不,他们完全不同。两者都可能是函数,但仅此而已。A不接受任何参数,因此您可以对其进行评估(在您选择的某个点对其进行评估是全部目的),而这一切都与参数及其表示有关。

不,它们完全不同。两者都可能是函数,但仅此而已。A不接受任何参数,因此您只需对其进行评估(在您选择的某个点对其进行评估就是全部目的),而这一切都与参数及其表示有关。

不,它们完全不同

然而,
thunks
currying
函数式编程中都有应用

图恩克斯 Thunks是一种用于延迟计算的
函数编程技术

这在
redux
的上下文中对我们帮助很大

那么,当我们
dispatch
一个动作时,如果我们想延迟计算,我们该怎么办? 我们使用
thunks
作为中间件

这很简单

export default function thunkMiddleware({ dispatch, getState }) {
  return next => action =>
    typeof action === 'function' ?
      action(dispatch, getState) :
      next(action);
} 
这主要是
redux-thunk
thunks
的实现

它基本上只是检查
调度的
操作是否是一个函数,如果不是,它只是按原样传递它

您可以阅读核心实现。只有14行

咖喱 Currying是将一个包含n个参数的函数转换为每个函数都有一个参数的n个函数

例如,如果我们有一个函数,它有三个参数a,b和c

let result = fn(a,b,c)
当我们对它使用咖喱时,它就变成了

let applyCurrying = curriedFn(fn);
let result = applyCurrying(a)(b)(c);
curriedFn的一个简单实现:

const curriedFn = a => b => c => ( do compuation with a,b,c );

在curry中,每个函数只接受一个参数。

不,它们完全不同

然而,
thunks
currying
函数式编程中都有应用

图恩克斯 Thunks是一种用于延迟计算的
函数编程技术

这在
redux
的上下文中对我们帮助很大

那么,当我们
dispatch
一个动作时,如果我们想延迟计算,我们该怎么办? 我们使用
thunks
作为中间件

这很简单

export default function thunkMiddleware({ dispatch, getState }) {
  return next => action =>
    typeof action === 'function' ?
      action(dispatch, getState) :
      next(action);
} 
这主要是
redux-thunk
thunks
的实现

它基本上只是检查
调度的
操作是否是一个函数,如果不是,它只是按原样传递它

您可以阅读核心实现。只有14行

咖喱 Currying是将一个包含n个参数的函数转换为每个函数都有一个参数的n个函数

例如,如果我们有一个函数,它有三个参数a,b和c

let result = fn(a,b,c)
当我们对它使用咖喱时,它就变成了

let applyCurrying = curriedFn(fn);
let result = applyCurrying(a)(b)(c);
curriedFn的一个简单实现:

const curriedFn = a => b => c => ( do compuation with a,b,c );
在currying中,每个函数只接受一个参数。

对于那些想知道为什么和何时使用currying的人,这篇博文解释得很好:对于那些想知道为什么和何时使用currying的人,这篇博文解释得很好: