node.js eventEmitter setImmediate 与异步

node.js eventEmitter setImmediate vs. async

我正在阅读 eventEmitter 文档并看到他们讨论异步代码与同步代码的部分。他们有这个示例来展示如何异步处理事件:

const myEmitter = new MyEmitter();
myEmitter.on('event', (a, b) => {
  setImmediate(() => {
    console.log('this happens asynchronously');
  });
});

我的问题是:使用 async 关键字不会达到同样的目的吗?

下面的实现不会也运行异步吗?

const myEmitter = new MyEmitter();
myEmitter.on('event', async () => {
  console.log('does this happens asynchronously????');
});

如果您告诉我们您认为它们相同的原因,这可能会有所帮助。

第二个函数将在事件上执行,即使它被标记为异步(它只是 return 一个不会在任何地方使用的承诺)。

第一个也会在事件上执行,但在事件队列为空时将其内部内容(您传递给 setImmediate 的函数)安排为 运行。

async 并不意味着“稍后再做”,它只是意味着“自动将我的 return 包装在一个承诺中,并允许我在我的函数体中使用 await”。