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
”。
我正在阅读 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
”。