【问题标题】:How do I define AsyncFunction in node? [duplicate]如何在节点中定义 AsyncFunction? [复制]
【发布时间】:2021-09-14 15:00:47
【问题描述】:

我正在尝试在节点中定义一个 AsyncFunction(请注意大 F),如下所述:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AsyncFunction

但我明白了:

AsyncFunction('var1', 'var2', 'let test=var1+var2') (1, 2)
ReferenceError: AsyncFunction is not defined

创建一个普通的 Function 对象可以正常工作。 NodeJS 不支持 AsyncFunction 吗?

【问题讨论】:

  • @iLuvLogix 是的!谢谢!我需要先定义函数 AsyncFunction。 javascript引擎开发人员非常奇怪的解决方案......
  • 不用担心 - 第一次也让我措手不及;)

标签: javascript node.js


【解决方案1】:

我认为您从根本上提出的问题是定义异步函数的语法是什么,而不是真正尝试调用该对象的构造函数。

如果是,那么:

同步:

function foo()

异步:

async function bar()

更新: 在了解您的 cmets 之后,我鼓励您重新阅读规范: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AsyncFunction

它清楚地描述了它不是一个全局范围的对象。下面列出的示例也描述了它的用法,这也强化了在使用前必须(本地)分配它的想法,因此有一个定义。

【讨论】:

  • 不,我不是。我在问为什么 AsyncFunction 在 Node.js 中不起作用。我需要先手动分配它。 const AsyncFunction = Object.getPrototypeOf(async function(){}).constructor;
  • @DanieleTesta 为什么还要使用AsyncFunction 构造函数?它不是一个全局对象,因为您需要使用此答案中显示的语法来创建异步函数。
  • @Lennholm 因为我要运行的代码在变量中。如果我以“正常”方式定义它,我将不得不使用 eval() 来执行代码,然后 async 无论如何都不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-24
  • 1970-01-01
  • 2018-02-21
  • 1970-01-01
  • 1970-01-01
  • 2017-05-31
相关资源
最近更新 更多