javascript - 为以后的 Javascript 保存参数

标签 javascript function

这个问题的标题可能具有误导性。我在理解这个概念时遇到了一些麻烦。我想将所有参数传递给一个函数,但稍后用这些参数调用它。

我目前正在做这样的事情:

function copyRecords(userId, options) {
    const getRecordsWrapper = (userId, options) => () => getRecords(userId, options);
    abstractionService = new MyAbstractionService(getRecordsWrapper);
    ...etc
}

这是我要保存并稍后调用该函数的地方:

class MyAbstractionService {
    constructor(getRecords) {
        this.getRecords = getRecords;
    }
    performSomeAction() {
        return this.getRecords();
    }
}

我需要这样做,因为 getRecords 在不同的区域采用不同的参数,我想将它们抽象到一个服务中,而不必将一堆参数传递到服务中。这会变得很困惑,因为我还需要为其他一些功能执行此操作。

我的想法是否正确?除了让一个函数返回另一个返回我的函数的函数之外,还有另一种方法可以做到这一点吗?此外,不确定这是否重要,但 getRecords 返回一个 Promise。不过,在我稍后进入抽象服务之前,我不想开始处理 Promise

最佳答案

在函数式编程术语中,您所描述的是 Currying ,在 JavaScript 中,您可以使用 bind() 实现最简单的想法功能:

const getRecordsWrapper = getRecords.bind(null, userId, options);

传递给 bind 的第一个参数是待调用函数的函数上下文(this),而其余参数则被传递作为常规参数。

如果您正在寻找功能齐全的 JavaScript 函数式编程框架,请查看 Ramda.js (例如)。

关于javascript - 为以后的 Javascript 保存参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51118689/

相关文章:

javascript - AngularJS- 改变 ng-model 的值

swift - 有没有办法将 NSToolbarButton 与 MainViewController 连接起来?

function - 如何将引用另一列的函数添加到 libreoffice-calc?

c - 是否可以编写一个函数,该函数返回一个指向与其参数中的函数不同的函数的指针?

javascript - 除非输入所有数据,否则不要提交

javascript - 在 Flask 中动态更新变量

javascript - div/bold 包含文本给类

javascript - 如何获取单个数组中差异最大的元素?

javascript - Backbone.js 安全

r - 如何在函数中结合 lapply 和 dplyr