2016-09-28 2 views
2

можно (и правильно) создать пользовательский наблюдаемый? Например, если у меня есть данные в моем кэше, я хотел бы создать пользовательские наблюдаемым, прежде чем сделать запрос HTTP:Создать пользовательский наблюдаемый

мой запрос:

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

Thank в

+0

Я не понимаю, в чем проблема. Почему вы не можете создать пользовательский наблюдаемый? Или вы хотите использовать наблюдаемый вместо запроса 'http'? – martin

ответ

0

Да, вы можете создать один предмет работать как наблюдаемый, как описано в ответе can i emmit the event from parent to child, и использовать его, когда у вас есть данные в вашем кеше.

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

Смежные вопросы