[英]Rxjs: use values of observables in function that return promise/observable
[英]RXJS6 - return an Observable from a Promise function which returns an Observable?
我有一個方法getData
,它返回一個Observable<SupportingDocument>
。
( 因為它是外部API,所以無法更改代碼和返回值 )。
getData(): Observable<SupportingDocument> {
return of(new SupportingDocument());
}
當用戶單擊按鈕時,我們實際上會向他顯示一個“模態”頁面。 當該模式關閉時(Promise api)-我們應該調用getData()
並返回值:
public dialogShow(): Promise<Observable<SupportingDocument>> {
return Promise.resolve(1).then(() => { //modal was closed
return this.getData();
})
}
最后,我應該提供一個show()
方法,該方法應該返回從return this.getData();
返回的值(和錯誤return this.getData();
( shows()的返回值不必是Observable,也可以是一個promise )。
所以我這樣做了:
public show(): Observable<SupportingDocument> {
return new Observable<SupportingDocument>((obs) => {
this.dialogShow().then((res: Observable<SupportingDocument>) => obs.next(res), (res) => obs.error(res));
})
}
完整的代碼:
//user starts here
public show(): Observable<SupportingDocument> {
return new Observable<SupportingDocument>((obs) => {
this.dialogShow().then((res: Observable<SupportingDocument>) => obs.next(res), (res) => obs.error(res));
})
}
public dialogShow(): Promise<Observable<SupportingDocument>> {
return Promise.resolve(1).then(() => {
return this.getData();
})
}
getData(): Observable<SupportingDocument> {
return of(new SupportingDocument());
}
題
我想我已經把這樣一個簡單的任務復雜化了。 更多-我真的不喜歡new Observable
構造方法。
如果不使用可觀察的構造函數(包括錯誤處理)解決方案,是否可以解決此問題?
為什么不只將Promise
包裝到Observable
(以便您可以使用Observable
可以提供的所有運算符) ,然后使用switchMap()
呢?
public dialogShow(): Observable<SupportingDocument> {
return from(Promise.resolve(1)).pipe(switchMap(() => this.getData()));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.