【发布时间】:2021-10-26 19:41:15
【问题描述】:
我正在开发一种定制的温斯顿运输工具;文档(剪切和粘贴如下)非常清晰......
class CustomTransport extends Transport {
log(info, callback) {
setImmediate(() => {
this.emit('logged', info);
});
// Perform the writing to the remote service
callback();
}
};
...但是,这是this.emit('logged', info); 的含义,为什么在setImmediate 中?
- 我会说调用
callback就足以让调用者知道写操作已经执行了, - 我们可以说
setImmediate需要在 Node.js 事件循环中触发事件 after IO 处理程序,但绝对不能保证下一个 IO 循环足以满足我的自定义写入完成,所以 - 为什么在写操作之前在之前触发
'logged',而不是触发'logging'?
我问了同样的问题to the maintainers,但结果是……风滚草。
谁能为我揭开那个神秘事件背后的秘密?
【问题讨论】: