如何创建一个延迟调用给定函数的函数?

时间:2018-05-23 19:13:01

标签: ramda.js

使用ramda,我试图找到(或构建)一个非常简单的运算符,它需要一个函数并返回一个函数,该函数在返回一个进行实际调用的新函数之前会询问它的参数。您可以将此视为“延迟”调用。正如下面的回复所指出的,这通常称为thunk

基本上,

const wrap = fn => (...args) => () => fn(...args);

const sayHiWorld = wrap(console.log)('hi', 'world');
sayHiWorld();
// -> 'hi world'

部分应用程序在我的情况下不起作用,因为args实际上在定义时不知道。我得到的最近的是使用R.useWith - 但这会限制参数的数量。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

我有点困惑。看起来好像你的wrap中有一个非常好的版本。你期待Ramda必须已经拥有吗?你想要一个用Ramda编写的版本吗?

通过调用此函数创建的内容通常称为 thunk ,我有时会看到这样一个名为thunkify的函数。但wrap也很好。

您可能也会看到讨论 here