Rxjs,如何将回调方法链接到Observable?

想成为专家

我需要将回调方法链接到Observable链。

private testMethod(): Rx.Observable<any> {
        const deferred = this.$q.defer();
        let promise = deferred.promise;

        this.$window.fileChooser.open((results: any) => {
            deferred.resolve(results);
        }, (error: any) => {
            this.Logger.log(error);
        });

        return this.rx.Observable.fromPromise(promise)
            .map((contentURI: string) => {
                // need to link call-back method
                this.$window.FilePath.resolveNativePath(contentURI, (absolutePath: any) => {
                    // need to pass absolutePath to next map method
                    return absolutePath;
                });
            })
            .map((fileEntry: any) => {
                let results = [];
                results.push({
                    fileEntry,
                    mimeType: 'image/jpeg'
                });
                return results;
            })
            .catch(this.ExceptionService.observableCatcher('error'));
}

从诺言中,我可以获得contentURI,并且需要调用使用回调this。$ window.FilePath.resolveNativePath方法。它应该返回到下一个map方法的绝对路径。

如何在返回的Promise和解析的map方法之间链接回调方法?

在此处输入图片说明

卡坦

您可以用来bindCallback为回调创建一个可观察对象:

import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/bindCallback';

...
.map((contentURI: string) => {
  const bound = Observable.bindCallback((
    path: string,
    callback: (result: string) => void
  ) => this.$window.FilePath.resolveNativePath(path, callback));
  return bound(contentURI);
})
...

我使用了arrow函数,以便参数类型是显式的,并且可以resolveNativePath在上调用this.$window.FilePath

我没有使用过Function.prototype.bind,因为它返回any并且确实与TypeScript的bindCallback函数类型推断有关

上面的答案使用RxJS5。但是,您添加到问题中的其他信息表明您正在使用版本4。在该版本中,该函数名为fromCallback

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Scala-如何将回调传递给方法

RxJS:如何将bindNodeCallback()视为可以将运算符链接到它的Observable?

如何将方法链接到GUI?

如何将回调从活动传递到片段

如何将回调函数传递给子组件?

角度2:如何将回调结果返回给组件?

如何将回调函数传递给父级

如何将回调函数从Java传递到Kotlin类

如何将回调添加到Webform项目

如何将回调函数传递给返回多行的aggregate()?

如何将回调传递给孩子而不触发它

如何将回调从 TableView 传递到 TableView Cell?

将回调函数转换为 RxJS

如何将回调作为变量传递给预定义的回调

如何将可观察结果链接到rxjs中的以下可观察结果

一般如何将调用链接到ng2-Translate和rxjs observables?

我如何将回调结果传递给变量并自由访问var

React.js如何将回调传递给子组件?

如何将回调作为参数传递给另一个函数

如何将回调应用于函数中定义的任意组件 id 值?

使用Context.actorOf时如何将回调函数传递给akka actor构造函数?

如何将回调定义为两种类型之一?

如何将回调函数添加到由JQuery添加的元素

如何将回调传递给传递给“ vo”库的生成器?

在决定如何将回调传递给addEventListener时应该考虑什么?

如何将回调函数从C ++传递给Objective-C

如何将回调函数作为构造函数参数传递并分配给类属性

如何将回调传递给 EM_ASM for C++?

如何将回调函数全局绑定到 tkinter 中的小部件类型?