【发布时间】:2016-04-14 01:57:41
【问题描述】:
我正在使用 RxJs 来收听 amqp 队列(不是很相关)。
我有一个函数createConnection,它返回一个Observable,它发出新的connection 对象。建立连接后,我想每 1000 毫秒通过它发送消息,并且在 10 条消息之后我想关闭连接。
我试图避免外部状态,但如果我不将连接存储在外部变量中,我该如何关闭它?看我从连接开始,然后flatMap 并推送消息,所以在几个链之后我不再拥有连接对象。
这不是我的流程,但想象一下这样的事情:
createConnection()
.flatMap(connection => connection.createChannel())
.flatMap(channel => channel.send(message))
.do(console.log)
.subscribe(connection => connection.close()) <--- obviously connection isn't here
现在我明白这样做很愚蠢,但现在我该如何访问连接?我当然可以从var connection = createConnection()开始
然后以某种方式加入。但是我该怎么做呢?我什至不知道如何正确地问这个问题。底线,我所拥有的是一个可观察的,它发出一个连接,在打开连接后我想要一个每 1000 毫秒发出消息的可观察(带有take(10)),然后关闭连接
【问题讨论】:
标签: javascript node.js reactive-programming rxjs