繁体   English   中英

发布/订阅模式中的参数如何工作?

[英]How do arguments in publish/subscribe pattern work?

在一个地方,我们使用eventEmitter生成事件。 实际上,这是非常常见的方式。

eventEmitter.emit('started', data, date);

在另一个地方,我们试图抓住它。 使用箭头功能时,一切都非常清楚。 “数据”和“日期”作为参数传递给函数

someInstanse.event.on('started', (data, date) => {
    //crazy stuff here
})

但是这个想法实际上是如何工作的? 我们用发射器确定了3个参数,现在我们实际上只有事件字符串和一个函数

someInstance.event.on('started', function(data, date) {
});

我想在添加箭头函数之前,这是调用匿名函数的唯一方法

这是典型的发布/订阅设计模式。 实际上,这取决于幕后如何实现emit以及订户对事件的响应。

基本上,在publish函数中,您要调用每个publisher(on)函数,这些函数随publish(emit)一起提供信息。 下面只是一些伪代码。

function publish(type, ...args) {
    // for each of the subscribers of that type
    for (let i = 0; i < pubsub[type].length; i++) {
        // you could do (this provides the listener with type)
        subscribers[i](type, ...args)
        // or you could do (the subscriber doesn't know the type)
        subscriber[i](...args)
    }
}

如果您想看一下,我在github中编写了一个缩小的pub / sub模式。 我认为帮助您理解此问题非常有帮助。 https://github.com/thomasyimgit/pubsub/blob/master/index.js

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM