【问题标题】:Convert callback to RX.Observable in Nodejs在 Nodejs 中将回调转换为 RX.Observable
【发布时间】:2016-09-25 23:48:13
【问题描述】:

我正在处理一个使用无法换出的第三方库的项目。它本质上是一个 URL 源并返回数据。它返回承诺。它将返回的数据传递回一个匿名回调......不是你传递给函数的数据。

文档参差不齐,但这里是他们指导您使用他们的库的方式。

third-party(URLsource, selector, scope)(function(err, data){ /* work with data array here*/ });

目前,代码是一团糟。这部分是为了回调地狱和过度使用承诺。

通过 observables 管道数据将有助于简化和清理这个项目很多......但我仍在学习 RXjs 以及 observables 的工作原理。

我认为这个问题很适合:

let datapull = Rx.Observable.bindNodeCallback(third-party);
let result = datapull(URLsource, selector, scope);
result.subscribe(result => console.log(result), e => console.log("Error: " + e)

但是,这不起作用,因为最后一个参数:

third-party(URLsource, selector, scope)

不是回调函数。

如何将此第三方函数的结果包装在 RX Observable 中?

【问题讨论】:

    标签: node.js rxjs


    【解决方案1】:

    您的使用示例表明第三方 API 函数返回一个接受回调的函数。

    如果是这样的话,需要传递给bindNodeCallback的是第三方调用的结果,而不是函数本身:

    let datapull = Rx.Observable.bindNodeCallback(thirdParty(URLsource, selector, scope));
    let result = datapull();
    result.subscribe(result => console.log(result), e => console.log("Error: " + e)
    

    【讨论】:

    • 呃……这现在太明显了。感谢您的帮助!
    猜你喜欢
    • 2016-08-11
    • 2018-12-17
    • 2018-09-04
    • 2017-03-07
    • 2018-04-23
    • 1970-01-01
    • 2022-10-06
    • 2018-06-25
    • 2019-04-27
    相关资源
    最近更新 更多