2016-09-28 6 views
2

es ist möglich (und korrekt), ein benutzerdefiniertes Observable zu erstellen? Zum Beispiel, wenn ich Daten in meinen Cache haben, würde ich benutzerdefinierte beobachtbaren erstellen möchten, bevor Sie eine HTTP-Anfrage machen:Benutzerdefiniertes Observable erstellen

meine Anfrage:

private device: Device; 
getDeviceById(deviceId): Observable<Device> { 
    if(this.device._id == deviceId) { 
     let myObservable = new Observable('with my device'); 
     return myObservable; 
    } else return this.http.get('/api/device/get/'+deviceId) 
       .map(res => res.json()) 
       .catch(this.handleError); 
} 

des Thank
+0

Ich verstehe nicht, was das Problem ist. Warum konnten Sie kein benutzerdefiniertes Observable erstellen? Oder möchten Sie eine beobachtbare statt der "http" -Anfrage verwenden? – martin

Antwort

0

Sie können folgendes tun:

var button = document.querySelector('button'); 

var subscription = Rx.Observable.create(function(obs) { 
    button.onclick = function(event) { 
    obs.next(event); 
} 
.subscribe(function(value) { 
    console.log(value); 
},); 

in diesem Link, um mehr zu sehen:

getDeviceById(deviceId): Observable<Device> { 
if(this.authProvider == deviceId) { 
    return Observable.create(observer => { 
     observer.next("something"); 
     observer.complete(); 
    }); 
} else return this.http.get('/api/device/get/'+deviceId) 
      .map(res => res.json()) 
      .catch(this.handleError); 
+0

Ich versuche es bereits mit diesem aber das zurückgegebene Observable ist nicht der Typ "Observable " –

Verwandte Themen