如何从回调中创建Observable

时间:2018-02-20 00:32:19

标签: javascript typescript rxjs observable ethereum

我需要从

进行观察
window.web3.eth.getCoinbase((error, result) => { ... });

这是个好主意吗?

new Observable<string>(o => {
    this.w.eth.getCoinbase((err, result) => {
        o.next(result);
        o.complete();
    });
});

1 个答案:

答案 0 :(得分:6)

RxJS包含一个bindNodeCallback可观察的创建者,专门用于从使用节点式回调的异步函数创建observable。

您可以像这样使用它:

const getCoinbaseAsObservable = Observable.bindNodeCallback(
  callback => this.w.eth.getCoinbase(callback)
);

let coinbaseObservable = getCoinbaseAsObservable();
coinbaseObservable.subscribe(
  result => { /* do something with the result */ },
  error => { /* do something with the error */ }
);

请注意,箭头函数用于确保使用getCoinbase作为其上下文调用this.w.eth方法。