javascript - Observable 完成后返回单个对象

标签 javascript angular rxjs observable

我有一个包含几个元素(字体)的 Observable

myFontsObservable = Observable.of<Font>(new Font("font1"), new Font("font2"));

现在我想订阅这个Observable,处理所有字体并将它们注册到一个文档中,在处理完所有字体后,返回文档

public registerFonts(myFontsObservable): Observable<Document> {
    doc = new Document();
    myFontsObservable.subscribe(
        font => doc.register(font);
        (err) => {},
        () => return Observable.of(doc);
    );
    // I need to return something here too
}

此代码无法编译,因为我还需要在订阅之外返回一些内容。但是,如果我在那里返回一些内容,那么当我调用 registerFonts(...) 时,我会得到错误的值,因为它尚未完成

我该怎么做?

最佳答案

你可以尝试一些类似的事情

public registerFonts(myFontsObservable): Observable<Document> {
    return myFontsObservable
           .reduce((doc, font) => {
              doc.register(font);
              return doc
           }, new Document())
}

关于javascript - Observable 完成后返回单个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49734525/

相关文章:

Angular - 如何处理重定向

javascript - 是否可以使用 HTML 的 .querySelector() 通过 SVG 中的 xlink 属性进行选择?

javascript - angularjs 应用程序在代码连接后无法正常工作

javascript - 为什么在 foreach 循环中不能使用 Typescript 中的全局变量?

javascript - 如何按顺序调用两个 API 并将两者的数据作为单个 Observable 返回

angular - 如何避免 Angular 9 中复杂 RxJS 管道的内存泄漏?

javascript - 如何在 RxJS 中使用 take() 而不取消订阅 observable

javascript - 如何使用任意原型(prototype)制作可调用的 JS 对象?

c# - 对预检请求的响应未通过访问控制检查 : The value of the 'Access-Control-Allow-Credentials' header in the response is ''

angular - 如何始终将焦点设置在 Angular 中的输入上