Observable:返回Promise的结果直到取消订阅
问题描述:
我无法将我的头围绕Observables,我希望你们能帮助我。Observable:返回Promise的结果直到取消订阅
我想写一个小函数,它返回一个Observable来订阅。 Observable应该每三秒返回Promise的结果。
下面的函数返回的承诺,但我想它返回无极结果:
public static getWifiInfos(): Observable<Promise<ConnectionInfo>> {
return Observable
.interval(3000)
.map(() => Hotspot.getConnectionInfo());
}
我AngularJS 2和打字稿工作。
答
你需要的是switchMap
,它将你的间隔映射到另一个Observable的输出。我不知道如何更好地描述它。
public static getWifiInfos(): Observable<ConnectionInfo> {
return <Observable<ConnectionInfo>> Observable
.interval(3000)
.switchMap(() =>
Observable.fromPromise(Hotspot.getConnectionInfo())
)
}
答
您可以尝试以下,
private connectionInfoSubject = new Subject<ConnectionInfo>();
connectionInfoObservable = this.connectionInfoSubject.asObservable();
public static getWifiInfos(): Observable<ConnectionInfo>{
Observable
.interval(3000)
.map(() => {
// Assuming Hotspot.getConnectionInfo is a synchronous call
this.connectionInfoSubject.next(Hotspot.getConnectionInfo());
// If Hotspot.getConnectionInfo is promise
Hotspot.getConnectionInfo().then(result => {
this.connectionInfoSubject.next(result);
})
});
}
希望这有助于!