Javascript thunk和函数curry是一样的吗?
当我学习thunk时,我认为它们就像函数咖喱。为什么叫thunk 砰 功能咖喱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不接受任何参数,因此
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的人,这篇博文解释得很好: