2016-08-30 11 views
1

私はObservablesの周りを頭で囲むことができません。皆さんが助けてくれることを願っています。Observable:Promiseの結果を返信します。

購読するObservableを返す小さな関数を書いておきたいと思います。 ObservableはPromiseの結果を3秒ごとに返します。

次の関数は、約束を返しますが、私はそれは約束の結果を返すしたいと思います:

public static getWifiInfos(): Observable<Promise<ConnectionInfo>> { 
     return Observable 
      .interval(3000) 
      .map(() => Hotspot.getConnectionInfo()); 
} 

私はAngularJS 2と活字体で動作します。

答えて

1

switchMapは、間隔を別のObservableの出力にマッピングします。私はそれをどんなに良く表現するかを知らない。

public static getWifiInfos(): Observable<ConnectionInfo> { 
    return <Observable<ConnectionInfo>> Observable 
    .interval(3000) 
    .switchMap(() => 
     Observable.fromPromise(Hotspot.getConnectionInfo()) 
    ) 
} 
1

あなたは

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); 
      }) 
     }); 
    } 

は、この情報がお役に立てば幸い、以下試してください!

関連する問題