我有一个带有几个元素(字体)的Observable
myFontsObservable = Observable.of<Font>(new Font("font1"), new Font("font2"));
现在我想订阅这个Observable,处理所有字体并在Document中注册它们,然后在完成所有这些字体的处理后,返回Document
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(...)时,我得到错误的值,因为它还没有完成
我该怎么做?
答案 0 :(得分:1)
你可以沿着这些方向尝试一些事情
public registerFonts(myFontsObservable): Observable<Document> {
return myFontsObservable
.reduce((doc, font) => {
doc.register(font);
return doc
}, new Document())
}
答案 1 :(得分:0)
使用mergeMap运算符(可管道)。
此运算符将处理第一个observable的结果,并需要返回另一个observable。我相信这就是你所需要的。
ImageView