【问题标题】:a function that executes any type of function执行任何类型函数的函数
【发布时间】:2021-11-15 17:09:57
【问题描述】:

我想知道是否有一种方法可以编写一个可以执行任何类型函数的函数,无论它是否是异步的。我想确保获取返回值,或者执行时是否发生错误。

【问题讨论】:

  • 我认为你必须给我们一个更具体的描述你想要做什么。无论是否异步,您都调用相同的函数。从异步函数中提取返回值完全取决于函数的编写方式。它需要接受将在完成或错误时调用的回调,或者它需要返回一个承诺,该承诺将在成功时以最终值解析并在错误时拒绝。
  • 请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。
  • 我有一个包含函数属性的对象。例如执行处理程序的路由器。我不知道我得到的是什么类型的函数,但我不希望我的应用程序在执行时出现问题时崩溃。请记住,我没有使用 express 只是 vanilla JS。如果该函数中有一个引发错误的 setTimeout,即使将调用者函数包装在 try/catch 中并且我的应用程序崩溃,我也无法捕获它。

标签: node.js async-await es6-promise


【解决方案1】:

您可以将函数传递给异步函数并让它等待完成。

async function exec(myFunc, args = []) {
    return await myFunc(...args);
}
function myExampleAddFunction(a, b) {
    return new Promise((resolve, reject) => {
        console.log('Hello');
        resolve(a + b);
  });
}

const result = await exec(myExampleAddFunction, [1, 2]);

args 是一个可选参数,您可以在其中将函数的参数作为数组传递。

无论函数返回值还是承诺,这都会起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-05
    • 1970-01-01
    • 1970-01-01
    • 2020-05-23
    • 1970-01-01
    • 2016-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多