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????');
});

如果你告诉我们为什么你认为它们是相同的,可能会有所帮助。

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

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

async不代表"以后再做";它的意思是"自动将我的返回包在一个承诺中,并允许我在函数体中使用await"。

最新更新