【问题标题】:rxjs and typescript return an function with no parametersrxjs 和 typescript 返回一个没有参数的函数
【发布时间】:2019-10-15 18:50:38
【问题描述】:

我正在尝试将 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 打字稿3.4.5 amqplib 0.5.2

【问题讨论】:

    标签: typescript rxjs rxjs6


    【解决方案1】:

    这应该可以解决问题。

    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)
        })
    
    })
    

    【讨论】:

    • 老实说,我不知道。我只是尝试使用回调 api 而不是来自amqlib 的 Promise Api。我只是对其他模块有同样的问题。回调样式 API 有效,但 Promise Api 无效。如果我知道我会写在答案 ofc :)
    • 我刚来,快速阅读所有文档,并从头开始回答。我没有任何使用amqlib 的经验,我也没有使用rxjs 的经验。没有时间深入探讨。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-27
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 2020-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多