2016-09-15 3 views
1

Ich habe diese Methode verwendet:Observer Rückruf nicht aufgerufen wird, wenn rxjs Intervall

export class PeriodicData { 
    public checkForSthPeriodically(): Subscription { 
    return Observable.interval(10000) 
    .subscribe(() => { 
     console.log('I AM CHECKING'); 
     this.getData(); 
    }); 
    }; 

    public getData(): Observable<MyObject> { 
    let objects: MyObject[] = this.filterData(); 
    return Observable.from(objects); 
    } 

    public filterData(): MyObject[] { 
    let someData; 
    // someData = filter(...) // logic to filter data 
    return someData; 
    } 
} 

Jetzt abonnieren ich getData() in einer anderen Klasse:

class Another { 
    constructor(private periodicData: PeriodicData) { 
    this.periodicData.getData().subscribe(obj => { 
     console.log('IN ANOTHER CLASS'); 
    }); 
    } 
} 

Dies funktioniert nicht. Das "IN ANDERER KLASSE" wird nicht protokolliert. Fehle ich etwas?

+0

Funktioniert es, wenn some nicht null ist? –

+0

Try-Catch-Funktion hinzugefügt, um zu sehen, ob es einen Fehler meldet – candidJ

+0

haben Sie kopieren und Ihren eigenen Code this.periodicData.getData(). Subscribe() {(obj) => { console.log ('in einer anderen Klasse "); } sollte this.periodicData.getData() sein subscribe ((obj) => { console.log ('in einer anderen Klasse'); }.); – kit

Antwort

0

Wenn Sie dies nur mit Live-Typoskript Transpiler getestet, dann ist es nicht einen Fehler aus, wenn Sie nicht speziell Observable verstehen und den from Operator (obwohl ich weiß nicht, warum).

Ich habe an die Spitze der app.component.ts und es funktioniert jetzt:

import { Observable } from 'rxjs/Observable'; 
import 'rxjs/add/observable/from'; 

Ihre Demo auf plnkr.co: http://plnkr.co/edit/uVnwG3bo0N8ZkrAgKp7F

Verwandte Themen