2016-11-02 7 views
0

の使用が観測:私は私のサーブレットのいずれかでこの機能を得た代わりに約束

private setValues() { 
    this.config.socket.on('config.weather', (values:any) => { 
     console.log(values); 
} 

は、私は、私はこのような何かを得るアウトソーシングしたい:

private setValues() { 
    this.config.load('weather').then((values:any) => { 
     console.log(values); 
} 

ソケット・サービスのあらゆる:

public load(key: string) { 
    return new Promise(resolve => { 
     this.socket.on('config.' + key, values => resolve(values)); 
}); 

これは最初の呼び出しで機能しますが、ソケットが再び起動すると、setValues() fuに送信されません。プロミスは一度しか働かないからです。

Observableを使用する必要があると思いますが、配置するアイデアはありません。

答えて

0

私は、件名を使用し、今ではすべてが正常に動作します:

public load(key: string) { 
    let sub = new Subject(); 
    this.socket.on('config.' + key, values => { 
     sub.next(values); 
    }); 
    return sub; 
} 

private setValues() { 
    this.config.load('weather').subscribe((values:any) => { 
     console.log(values); 
} 
関連する問題