NodeJS:使用回调创建高阶函数的高阶函数

时间:2017-05-14 21:04:53

标签: javascript node.js callback undefined higher-order-functions

由于我已经学习了更多关于NodeJS和callbackHell的知识,我试图在我的项目中包含越来越多的高阶函数。 我的一个想法是创建一个以适合回调的方式创建其他函数的函数。

我的方法如下:

function putFunctionInFunction(func, funcTwo) {
  const tempFunc = function (callback) {
    func(() => {
        funcTwo(callback);
    });
  };
  return tempFunc;
}

接下来我的计划是使用这个函数从一系列函数中创建一个大回调函数。

这些功能看起来像这样:

function callbackFunctionArray(arr) {
let tempFunc = function (callback) {
    callback();
};
for (const func of arr) {
    tempFunc = putFunctionInFunction(tempFunc, func);
}
return tempFunc;

}

可悲的是,我的第一个功能不起作用,我无法理解为什么。它只产生'未定义'的结果。到目前为止我猜测的是我想在tempFunc中保存的函数会立即被评估并产生'undefined'错误。

我的问题是:

  1. 如何在不使用其他模块的情况下实现putFunctionInFunction函数?
  2. 我的第二个功能有什么问题 - 可能在同一个区域?
  3. 有没有一种方法来组合比我更好和/或不同的功能?
  4. 感谢您的帮助。

    更新 - 问题已关闭: 看到我的回答。

1 个答案:

答案 0 :(得分:0)

我的所有功能都有效。我只是花了很多时间用错误的输入进行测试。可以使用的输入如下:

const inputFunc1 = function (func2) {func2()};
const inputFunc2 = function (callback) { callback()};
putFunctionInFunction(inputFunc1,inputFunc2)(() => {console.log("hello")});

为了避免此类问题,它可能是使用async / await的良好替代方案,并且可以在将来承诺更清晰的代码,如评论中所建议的那样。

无论如何,我会把它留在这里,因为我认为对于那些使用这个确切主题搜索更高阶函数的人来说这可能是有价值的。我找不到任何关于编写这样的函数的资源。