例如,我在创建新的Observable时使用了以下模板:
myFunction(): Observable<any> {
return new Observable((observer) => {
// do things, like make HTTP calls, cache, etc.
// generate valueToReturn
observer.next(valueToReturn);
observer.complete();
});
}
有更简洁的方式来写这个吗?我知道Observable.of
,但只有当你需要一个没有复杂动作的短Observable时才会这样。
我知道你可以回复一个HTTP电话。
答案 0 :(得分:2)
如果你指的是将这两行合并,那么:不,没有这样的东西。
但是作为一个旁注:你用你的评论排列的流似乎是一个非常普通的流:Http - &gt;地图值 - &gt;返回值,不应该要求Observable.create
- 在多个大型项目中使用RxJS我只能回想起需要Observable.create
的2个案例,我们能够通过链接内置的rxjs来处理其他所有事情-operators。
这是一个非常简单的例子:
myFunction(): Observable<any> {
return this.http.get(someAddress)
.map(data => data.json())
.map(toClientSideUsableData)
.do(data => this.myService.cache = data)
.do(raiseAlertIfInvalid);
}
答案 1 :(得分:0)
Angular 2 http默认情况下会这样做。查看Angular源代码xhr_backend.js
if (response.ok) {
responseObserver.next(response);
// TODO(gdi2290): defer complete if array buffer until done
responseObserver.complete();
return;
}