将回调转换为Nodejs中的RX.Observable

时间:2016-09-25 23:48:14

标签: node.js rxjs

我正在开发一个使用无法换出的第三方库的项目。它基本上是一个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中包装此第三方函数的结果?

1 个答案:

答案 0 :(得分:4)

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