从订阅者 Angular 获取数据的问题

Posted

技术标签:

【中文标题】从订阅者 Angular 获取数据的问题【英文标题】:Issue in fetching data from Subscriber Angular 【发布时间】:2019-11-20 03:14:08 【问题描述】:

您好,我是 Angular 新手,正在学习 observable 和 Subject 的概念。我的理解是 observable 是其他代码可以订阅的事件发射器,Subject 既可以订阅也可以发送数据。我尝试了下面的代码,在其中检查以毫秒为单位的时间是否均匀​​,并以此为基础发出成功和失败。基本上我已经创建了一个随机的成功和失败方法。问题是每当出现错误时,控件就会移动到错误块,但它永远不会打印成功或进入成功块。我不确定我做错了什么。如果您可以向我指出任何有助于消除我知识空白的博客或文档,请告诉我。提前致谢。

test() 
   const test_subject = new Subject<any>();
   var x = new Date();
   console.log(x.getMilliseconds());
   if (x.getMilliseconds() % 2) 
     //debugger;
     test_subject.next(true)
    else 
     //debugger;
     test_subject.error(false);
   
   return test_subject.asObservable();
 


   callSubscription() 
       this.appService.test().
           subscribe(data => 
               console.log("success");
           , error => 
               console.log("fail");
           );
   

【问题讨论】:

【参考方案1】:

来自 RxJS 文档:

在 Observable Execution 中,零到无限的 Next 通知可能是 发表。如果发送了错误或完成通知, 那么之后就没有其他东西可以交付了。

https://rxjs-dev.firebaseapp.com/guide/observable

这意味着,如果您曾经调用过 error() 或 complete(),除非您实施错误处理或重新创建 observable,否则您将无法再调用 next()。

【讨论】:

以上是关于从订阅者 Angular 获取数据的问题的主要内容,如果未能解决你的问题,请参考以下文章

Angular中利用rxjs库的Subject多播解决在第一次订阅时进行初始化操作(如第一次订阅时从服务器获取数据)

Angular 2:可观察订阅未正确读取数据[重复]

具有多个订阅者的 Angular 2 Observable

Angular 2:从订阅 http.post 获得响应后如何调用函数

取消订阅 Angular 中的 observable

从Angular中的不同本地主机获取数据