Node.js 将回调转换为RX。可在Nodejs中观察到

Node.js 将回调转换为RX。可在Nodejs中观察到,node.js,rxjs,Node.js,Rxjs,我正在从事一个使用第三方库的项目,该库无法调出。它本质上是指向URL源并返回数据。它不回报承诺。它将返回的数据传递回匿名回调,而不是传递给函数的回调 文档不完整,但下面是他们如何指导您使用他们的库 third-party(URLsource, selector, scope)(function(err, data){ /* work with data array here*/ }); 目前,代码乱七八糟。这在一定程度上是为了收回地狱和过度使用承诺 通过可观测数据管道传输数据将有助于简化和清理

我正在从事一个使用第三方库的项目,该库无法调出。它本质上是指向URL源并返回数据。它不回报承诺。它将返回的数据传递回匿名回调,而不是传递给函数的回调

文档不完整,但下面是他们如何指导您使用他们的库

third-party(URLsource, selector, scope)(function(err, data){ /* work with data array here*/ });
目前,代码乱七八糟。这在一定程度上是为了收回地狱和过度使用承诺

通过可观测数据管道传输数据将有助于简化和清理该项目……但我仍在学习RXjs以及可观测数据的工作原理

我认为这个问题很适合:

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中

您的使用示例表明,第三方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)

呃……这一点现在很明显了。谢谢你的帮助!