2

有可能(并且正确)创建一个自定义的 observable 吗?例如,如果我的缓存中有数据,我想在发出 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);
}

谢谢

4

4 回答 4

0

在 RxJS 中创建 Observable 有两种主要方法。主题和运算符。

https://www.tutscoder.com/post/custom-observable

于 2022-02-28T16:27:36.120 回答
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

于 2017-07-05T10:38:47.970 回答
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);
于 2016-09-28T11:55:48.690 回答
0

是的,您可以创建一个主题,使其像答案中解释的那样可观察,我可以将事件从父级发送到子级,并在缓存中有数据时使用它。

于 2016-09-28T11:51:24.723 回答