【发布时间】:2018-05-11 14:37:48
【问题描述】:
我正在开展一个项目,其中有一个供稿页面,该页面显示所有用户的所有类型的帖子。键入特定列表页面和帖子的详细信息页面。
页数- 1. 饲料 2. 列表(特定类型) 3. Detail(帖子的细节)
所以我有以下 Mongo 收藏 - 1.饲料 2. type1 帖子 3. type2 帖子 4. type3...
现在,当用户发布新帖子时,我将其保存到相应的集合中,让我们说“type1 post”并将成功返回给浏览器。但我也想用相同的数据更新我的“Feed”集合。我不希望在发送响应之前完成它。因为那会增加用户的等待时间。因此我使用了事件。这是我的代码 -
const emitter = new event.EventEmitter();
function savePost(){
// Code to save data to Mongo collection
emitter.emit('addToFeeds', data);
console.log('emit done');
return res.json(data);
}
emitter.on('addToFeeds', function(data){
// code to save data to Feeds collection
console.log('emitter msg - ', data);
});
现在,当我检查 console.log 输出时,它首先显示“emitter msg -”,然后是“emit done”。这就是为什么我假设emitter.on 代码在 res.json(data); 之前执行;
现在我想知道事件是否阻塞了代码?如果我必须在后台或发送响应后更新提要,正确的方法是什么?将来我还想实现缓存,因此即使添加了帖子,我也必须更新缓存,这也是我想在发送响应后或在后台执行的操作。
【问题讨论】:
标签: node.js eventemitter