首页 > 解决方案 > 如何创建一个延迟调用给定函数的函数?

问题描述

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

本质上,

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

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

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

有任何想法吗?

标签: ramda.js

解决方案


我有点困惑。看起来您的wrap. 您是否期望 Ramda 必须已经拥有它?你想要一个用 Ramda 编写的版本吗?

你想通过调用这个函数来创建的东西通常被称为 a thunk,我有时会看到这样一个函数叫做thunkify. 不过wrap也不错。

你也可以在这里看到讨论。


推荐阅读