2016-09-28 83 views
2

創建自定義可觀察對象是可能的(也是正確的)? 例如,如果我在高速緩存中有數據,我想創建自定義的可觀測做出HTTP請求之前:創建自定義Observable

我的要求:

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

感謝的

+0

我不明白有什麼問題。爲什麼你不能創建一個自定義的Observable?或者你想使用observable而不是'http'請求? – martin

回答

0

你可以做到以下幾點:

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

我已經試過這個,但返回的Observable不是類型「Observable 」 –

0

你可以做這樣的事情:

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

看到在該鏈接:http://reactivex.io/documentation/operators/create.html