Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 在编写新的观察值时,是否有方法将observer.next和observer.complete结合起来?_Angular_Rxjs_Observable - Fatal编程技术网

Angular 在编写新的观察值时,是否有方法将observer.next和observer.complete结合起来?

Angular 在编写新的观察值时,是否有方法将observer.next和observer.complete结合起来?,angular,rxjs,observable,Angular,Rxjs,Observable,例如,在创建新的观察对象时,我经常使用以下模板: myFunction(): Observable<any> { return new Observable((observer) => { // do things, like make HTTP calls, cache, etc. // generate valueToReturn observer.next(valueToReturn); observer.complete();

例如,在创建新的观察对象时,我经常使用以下模板:

myFunction(): Observable<any> {
  return new Observable((observer) => {
     // do things, like make HTTP calls, cache, etc.
     // generate valueToReturn
     observer.next(valueToReturn);
     observer.complete();
  });
}
myFunction():可观察{
返回新的可观察对象((观察者)=>{
//做一些事情,比如进行HTTP调用、缓存等。
//生成值返回
观察员。下一步(返回值);
observer.complete();
});
}
有没有更干净的方法来写这个?我知道可观察的,但只有当你需要一个短的可观察的,没有复杂动作的时候


我知道你可以直接返回一个HTTP调用。

如果你指的是合并两行,那么:不,没有这样的事情

但是,正如旁注:您用注释列出的流似乎是一个非常正常的流:Http->map values->return values,不需要
可观察的.create
-在多个较大的项目中使用RxJS,我只能回忆起需要
可观察的.create
的两种情况,通过链接内置的rxjs操作符,我们能够处理所有其他事情

下面是一个非常简单的例子:

myFunction(): Observable<any> {
    return this.http.get(someAddress)
        .map(data => data.json())
        .map(toClientSideUsableData)
        .do(data => this.myService.cache = data)
        .do(raiseAlertIfInvalid);
}
myFunction():可观察{
返回此.http.get(someAddress)
.map(data=>data.json())
.map(到客户端IDUsableData)
.do(数据=>this.myService.cache=data)
.do(提高有效性);
}

如果您指的是合并这两行,那么:不,没有这样的事情

但是,正如旁注:您用注释列出的流似乎是一个非常正常的流:Http->map values->return values,不需要
可观察的.create
-在多个较大的项目中使用RxJS,我只能回忆起需要
可观察的.create
的两种情况,通过链接内置的rxjs操作符,我们能够处理所有其他事情

下面是一个非常简单的例子:

myFunction(): Observable<any> {
    return this.http.get(someAddress)
        .map(data => data.json())
        .map(toClientSideUsableData)
        .do(data => this.myService.cache = data)
        .do(raiseAlertIfInvalid);
}
myFunction():可观察{
返回此.http.get(someAddress)
.map(data=>data.json())
.map(到客户端IDUsableData)
.do(数据=>this.myService.cache=data)
.do(提高有效性);
}

默认情况下,Angular 2 http会执行此操作。请看源代码


默认情况下,Angular 2 http会执行此操作。请看源代码


你在哪里定义变量
observer
@Aravind这只是角度2语法…那么你在寻找什么呢?这些“复杂动作”是什么?通常情况下,您会执行Observable.of(…),并使用运算符向其添加任意数量的操作。在这里,您定义变量
observer
@Aravind,这只是Angular 2语法…那么,您在寻找什么?这些“复杂操作”是什么?通常你可以观察到(…)并用操作符添加任意数量的操作。不过,我所做的不仅仅是获取数据。我还把东西保存到缓存中。这就是
.map(toClientSideUsableData)
应该表示的吗?我不知道那是怎么回事。有时我甚至不返回数据。我只是将一些数据分配给服务上的内存,然后视图将通过调用该服务来呈现这些数据。我只是确保在推到其他视图之前将这些数据加载到服务上。如果要将数据保存到服务中,可以使用.do运算符-该函数将在收到数据时执行,无需自定义可观察-我稍后将编辑我的答案这是非常酷的东西。感谢您显示
do
操作符。不过,我所做的不仅仅是获取数据。我还把东西保存到缓存中。这就是
.map(toClientSideUsableData)
应该表示的吗?我不知道那是怎么回事。有时我甚至不返回数据。我只是将一些数据分配给服务上的内存,然后视图将通过调用该服务来呈现这些数据。我只是确保在推到其他视图之前将这些数据加载到服务上。如果要将数据保存到服务中,可以使用.do运算符-该函数将在收到数据时执行,无需自定义可观察-我稍后将编辑我的答案这是非常酷的东西。感谢您显示
do
操作员。