NodeJS: Higher Order Function 创建带回调的高阶函数
NodeJS: Higher Order Function to Create Higher Order Function with Callback
随着我对 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;
}
遗憾的是,我的第一个功能无法正常工作,我无法理解原因。它只产生 'undefined' 个结果。到目前为止我猜测的是我想保存在 tempFunc 中的函数会立即被评估并产生 'undefined'-error。
我的问题是:
- 如何在不使用其他模块的情况下实现我的 putFunctionInFunction 函数?
- 我的第二个函数有什么问题吗 - 可能在同一区域?
- 有没有比我的and/or更好的组合函数的方法?
感谢您的帮助。
更新 - 问题已关闭:
看我的回答。
我的所有功能都能正常工作。我只是花了很多时间用错误的输入进行测试。有效的输入如下:
const inputFunc1 = function (func2) {func2()};
const inputFunc2 = function (callback) { callback()};
putFunctionInFunction(inputFunc1,inputFunc2)(() => {console.log("hello")});
为了避免此类问题,使用 async/await 可能是一个很好的替代方法,并承诺在将来使代码更加清晰,正如评论中所建议的那样。
无论如何,我会把它留在这里,因为我认为它对于其他使用这个确切主题搜索高阶函数的人来说可能很有价值。我找不到关于编写这样的函数的任何其他资源。
随着我对 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;
}
遗憾的是,我的第一个功能无法正常工作,我无法理解原因。它只产生 'undefined' 个结果。到目前为止我猜测的是我想保存在 tempFunc 中的函数会立即被评估并产生 'undefined'-error。
我的问题是:
- 如何在不使用其他模块的情况下实现我的 putFunctionInFunction 函数?
- 我的第二个函数有什么问题吗 - 可能在同一区域?
- 有没有比我的and/or更好的组合函数的方法?
感谢您的帮助。
更新 - 问题已关闭: 看我的回答。
我的所有功能都能正常工作。我只是花了很多时间用错误的输入进行测试。有效的输入如下:
const inputFunc1 = function (func2) {func2()};
const inputFunc2 = function (callback) { callback()};
putFunctionInFunction(inputFunc1,inputFunc2)(() => {console.log("hello")});
为了避免此类问题,使用 async/await 可能是一个很好的替代方法,并承诺在将来使代码更加清晰,正如评论中所建议的那样。
无论如何,我会把它留在这里,因为我认为它对于其他使用这个确切主题搜索高阶函数的人来说可能很有价值。我找不到关于编写这样的函数的任何其他资源。