Eventemitter代码是否阻塞

时间:2018-05-11 14:37:48

标签: node.js eventemitter

我正在开展一个项目,我有一个Feed页面,显示所有用户的所有类型的帖子。键入特定列表页面和帖子的详细信息页面。

Pages-  1.饲料  2.清单(特定类型)  3.细节(帖子的详细信息)

所以我跟随Mongo收藏 -  1.饲料  2. type1 post  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)之前执行;

现在我想知道事件阻塞代码了吗?如果我必须在后台更新Feeds或在发送响应之后是什么方法?将来我也想实现缓存,所以即使添加了帖子,我也必须更新缓存,我也想在发送响应后或后台时更新缓存。

0 个答案:

没有答案