首页 > 解决方案 > rxjs 和 typescript 返回一个没有参数的函数

问题描述

我正在尝试将 rxjs 与 amqplib 一起使用,将接收到的来自 rabbit 的消息转换为消息流:

const connection = await amqplib.connect(constr);
const channel = await connection.createChannel();
const callBack: any = bindCallback(channel.consume);
const observalble = callBack("queue");

问题是从 bindCallback 返回的 callBack 是一个没有参数的方法。这里做错了什么?

我依赖于这个例子:

// From a callback (last argument is a callback)
// fs.exists = (path, cb(exists))
var exists = Rx.Observable.bindCallback(fs.exists);
exists('file.txt').subscribe(exists => console.log('Does file exist?', exists));

形成 rxjs 文档...

请帮忙

我正在使用 rxjs 6.5.2 typescript 3.4.5 amqplib 0.5.2

标签: typescriptrxjsrxjs6

解决方案


这应该可以解决问题。

const connection = await amqplib.connect(constr);
const channel = bindCallback(connection.createChannel);
channel().subscribe(args => {
    const err = args[0]
    const ch = args[1]
    if(err) throw err

    const ch_observable = bindCallback(ch.consume)
    ch_observable("queue").subscribe(msg => {
        console.log(msg)
    })

})

推荐阅读