首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NodeJS:用回调创建高阶函数的高阶函数

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

Stack Overflow用户
提问于 2017-05-14 21:04:52
回答 1查看 342关注 0票数 0

随着我对NodeJS和callbackHell有了更多的了解,我试图在我的项目中包含越来越多的高阶函数。我的一个想法是创建一个函数,以适合回调的方式创建其他函数。

我的方法是这样的:

代码语言:javascript
复制
function putFunctionInFunction(func, funcTwo) {
  const tempFunc = function (callback) {
    func(() => {
        funcTwo(callback);
    });
  };
  return tempFunc;
}

在此之后,我的计划是使用这个函数从一个函数数组中生成一个大回调函数。

该函数如下所示:

代码语言:javascript
复制
function callbackFunctionArray(arr) {
let tempFunc = function (callback) {
    callback();
};
for (const func of arr) {
    tempFunc = putFunctionInFunction(tempFunc, func);
}
return tempFunc;

}

遗憾的是,我的第一个功能不起作用,我也无法理清原因。它只产生“未定义”-结果。到目前为止,我猜测的是,我想要保存在tempFunc中的函数会立即得到评估,并产生“未定义的”错误。

我的问题是:

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

谢谢你的帮助。

更新-问题已结束:看到我的答案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-15 12:09:01

我所有的功能都起作用了。我只是花了很多小时测试错误的输入。有效的输入如下:

代码语言:javascript
复制
const inputFunc1 = function (func2) {func2()};
const inputFunc2 = function (callback) { callback()};
putFunctionInFunction(inputFunc1,inputFunc2)(() => {console.log("hello")});

为了避免这些问题,使用异步/等待并保证将来代码更清晰,这可能是一个很好的选择,正如注释中所建议的那样。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43968777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档