node.js - 在 Nodejs 中将回调转换为 RX.Observable

标签 node.js rxjs

我正在做一个项目,该项目正在使用无法换出的第三方库。它实质上是转到 URL 源并返回数据。它返回 promise 。它将返回的数据传递回匿名回调......不是你传递给函数的数据。

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

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

目前,代码一团糟。这部分是为了回调 hell 和过度使用 promise 。

通过 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 中?

最佳答案

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

关于node.js - 在 Nodejs 中将回调转换为 RX.Observable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39692929/

相关文章:

javascript - 如何从 Node.js 的 node-googlemaps 获取路线

javascript - 如何将 8 位字符串数组作为 Angular 的输入并传递到 Node.js 后端?

mysql - 链接应用程序与数据库

node.js - 无法找到 Typescript 模块,即使 tsc 成功地解决了它

node.js - 具有NodeJS/CommonJS样式模块系统的语言

Angular如何使用combineLatest组合来自网站网址栏的路线和查询

angular - Observables 以及如何在 Angular2 中正确使用它们

rxjs - 如何为 Observable.interval() 添加延迟?

rxjs - ngrx store.select方法如何传递store上下文?

angular - rxjs 6 属性 'of' 在类型 'typeof Observable' 上不存在