이 과정에서 꺼져있을 수도 있지만 여기에 있습니다.관측 가능 범위 내에서 관측 가능 범위 내에서 관측 가능을 만드는 방법
나는 angular2 서비스가 있습니다. 이 서비스의 데이터 소스는 localstorage가 될 것입니다 ... 나중에 http를 사용하는 DB 호출이 반환 될 때 선택적으로 업데이트됩니다. 다양한 소스가 돌아올 때 반환 된 데이터를 업데이트하고 싶기 때문에 observables를 사용하고 싶습니다. 지금은 개념을 없애기 위해 localstorage 측면을 건너 뛰었습니다 ...하지만 'backstory'를 포함하여 (왜) 내가 왜하고 싶은지에 대한 감각을 갖게되었습니다. 여러 가지 방법이 있습니다.
제 생각에는 DB에서 이벤트가되는 페이로드와 함께 관찰 가능 객체를 반환하는 getHTTPEvents() 메소드가 있습니다.
private eventsUrl = 'app/mock-events.json';
getHTTPEvents() : Observable<Array<any>> {
return this._http.get(this.eventsUrl)
.map(response => response.json()['events'])
.catch(this.handleError); // handle error is a logging method
}
: 그를 조롱하기 위해
(이론은 미래의 어떤 시점에서 나는 또한 거기에 편승 할 것 'getLSEvents() 메소드가 거라고 것),이 코드가
내 목표는 반환 된 이벤트를 필터링 할 수 있지만 여전히 서비스 사용자에게 관찰 가능을 반환하는 메서드를 만드는 것입니다. 그것은 내 문제가있는 곳입니다. 그 목표를 가지고, 나는 서비스의 사용자들에 의해 호출 될 공개 메소드를 가지고있다.
public getEvents(key:string,value:string) : Observable<Array<any>> {
var allEventsObserve : Observable<Array<any>> = this.getHTTPEvents();
var filteredEventsObserve : Observable<Array<any>>;
allEventsObserve
.subscribe(
events => {
for(var i=0;i<events.length;i++) {
if(events[i][key]==value) {
console.log('MATCH!!!' + events[i][key]); // THIS WORKS!
return new Observable(observer => filteredEventsObserve = observer); // what do I need to return here? I want to return an observable so the service consumer can get updates
}
}
return allEventsObserve
},
error => console.error("Error retrieving all events for filtering: " + error));
}
위 작동하지 않습니다 (여기 https://coryrylan.com/blog/angular-2-observable-data-services에서 패턴을 사용하려고 시도). 나는 비디오를 많이 보았고 관측 가능성에 관한 튜토리얼을 많이 읽었지만 찾을 수있는 것은 http 관측 가능 항목을 만들고 사용하는 것 외에는 더 많은 것을 할 수없는 것 같습니다.
나는 더 새로운 관찰을 만드는이 방법을 시도 :
var newObs = Observable.create(function (observer) {
observer.next(events[i]);
observer.complete(events[i]);
});
을 그리고 적어도 그 컴파일하는 동안, 나는 확실하지 않다 방법 '복귀'를 적시에 ... 내가 할 수있는 '이벤트'가 존재하지 않기 때문에 allEventsObserve.subscribe 메소드 외부에서이를 생성하고 구독 내에서이를 "반환"할 수 없습니다. 나는 또한 어떻게 내가 다음에 '다음'을 "방아쇠를 당길"것인지 완전히 확신하지 못한다.
allEventsObserve 내의 데이터를 수정해야하며 어떻게해도 간단히 반환 할 수 있습니까? 올바른 유료 하중으로 새로운 관측 가능 (위에서 시도한 것처럼) 할 수 있습니까? 그렇다면 어떻게 작동시킬 수 있습니까? 등 ... 나는 여기를 확인했습니다 : How to declare an observable on angular2하지만 '두 번째'관찰 가능이 시작되는 방법을 따르지 않는 것 같습니다. 아마도 나는 전체 패러다임을 잘못 생각한 것일까 요?
Google 검색 결과를 저장하려면 Observable.create의 api가 다음 위치에 있습니다. https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/create.md – lowcrawler