Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.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.complete()未立即返回_Angular - Fatal编程技术网

Angular observer.complete()未立即返回

Angular observer.complete()未立即返回,angular,Angular,也许我没有抓住要点,但我的印象是,observer.complete()将完成observer,即observer.complete()后面的语句,因为它已完成,所以不会执行 export class RecordsService { public getRecords(): Observable<any> { let vm = this; return new Observable(observer => { var records = vm.http.g

也许我没有抓住要点,但我的印象是,observer.complete()将完成observer,即observer.complete()后面的语句,因为它已完成,所以不会执行

 export class RecordsService {
   public getRecords(): Observable<any> {

let vm = this;

return new Observable(observer => {
    var records = vm.http.get(
    url).subscribe(data =>{
      console.log('we got data ', data);
      observer.next(data)
      observer.complete();
    });

    observer.next(null);
    observer.complete();
     });
   }
 }
导出类记录服务{
public getRecords():可观察{
让vm=这个;
返回新的可观察对象(观察者=>{
var records=vm.http.get(
url)。订阅(数据=>{
log('我们得到了数据',数据);
观察员:下一个(数据)
observer.complete();
});
observer.next(空);
observer.complete();
});
}
}
我可以正确地看到控制台,但订户正在获取数据,并且为空。我该怎么做?我希望通过observer.next(data)和observer.next(null)获取数据,因为我以前调用过observer.complete()


现在,我先获取数据,然后获取null,我没有料到,在完成之后,观察者不会发出任何其他值

 export class RecordsService {
   public getRecords(): Observable<any> {

let vm = this;

return new Observable(observer => {
    var records = vm.http.get(
    url).subscribe(data =>{
      console.log('we got data ', data);
      observer.next(data)
      observer.complete();
    });

    observer.next(null);
    observer.complete();
     });
   }
 }

您可以在stackblitx示例中看到这一点

我希望通过observer.next(data)和observer.next(null)获取数据,因为我以前调用过observer.complete()


observer.next(null)
首先被调用异步HTTP调用
observer.next(data)
之后,但观察者已经完成。

观察者完成后不会发出其他值

 export class RecordsService {
   public getRecords(): Observable<any> {

let vm = this;

return new Observable(observer => {
    var records = vm.http.get(
    url).subscribe(data =>{
      console.log('we got data ', data);
      observer.next(data)
      observer.complete();
    });

    observer.next(null);
    observer.complete();
     });
   }
 }

您可以在stackblitx示例中看到这一点

我希望通过observer.next(data)和observer.next(null)获取数据,因为我以前调用过observer.complete()


observer.next(null)
首先被调用异步HTTP调用
observer.next(data)
之后,但是observer已经完成。

您期望的行为是什么?那么观测者是什么呢?@alt255也许我的解释错了,但是观测者。下一步(数据);observer.complete()会因为缺少更好的单词而停止进一步执行。我不希望在调用observer.complete()后返回null。您期望的行为是什么?那么观测者是什么呢?@alt255也许我的解释错了,但是观测者。下一步(数据);observer.complete()会因为缺少更好的单词而停止进一步执行。我不希望在调用observer.complete()后返回null。谢谢@cgTag。看看我的代码,只有在没有发送数据的情况下,我才需要做什么才能在以后发送null?@NieSelam,这取决于没有发送数据的方式。这是HTTP错误的结果还是HTTP响应不包含任何数据?@Reactgular我们可以在不发出任何值的情况下完成。接下来,我可以在我的代码repo中看到许多地方takentill(this.destrocted$)this.destrocted$.next(true);此.complete$.complete();谢谢@cgTag。看看我的代码,只有在没有发送数据的情况下,我才需要做什么才能在以后发送null?@NieSelam,这取决于没有发送数据的方式。这是HTTP错误的结果还是HTTP响应不包含任何数据?@Reactgular我们可以在不发出任何值的情况下完成。接下来,我可以在我的代码repo中看到许多地方takentill(this.destrocted$)this.destrocted$.next(true);此.complete$.complete();
 export class RecordsService {
   public getRecords(): Observable<any> {

let vm = this;

return new Observable(observer => {
    var records = vm.http.get(
    url).subscribe(data =>{
      console.log('we got data ', data);
      observer.next(data)
      observer.complete();
    });

    observer.next(null);
    observer.complete();
     });
   }
 }