首页 > 解决方案 > 从可观察的角度 7 中获取最后发出的值

问题描述

在下一次单击时,将值发射到 observable 能够获取但它首先被调用 n 次,它在下一次获取对象时得到空值。所以我需要写一个 if 条件,如果值不为空,然后执行一些逻辑。那么有没有办法获得最终完成的值,所以尝试了像 last take(1) 和行为主题这样的 rxjs 运算符,但是它们都没有工作附加代码片段在编写 observable 时有什么问题

savePersonalInfo$ = new Subject<any>();     
get savePersonalInfo() {
    return this.savePersonalInfo$.asObservable();
}

我的服务文件看起来像这样,其中尝试使用行为主题创建主题但没有运气。

onClickedNext(){
  // this.isContinueClicked = true;
  // this.shared.coapplicantForm = this.register;
  this.shared.isFromNext = true;
  this.shared.savePersonalInfo$.next({value: 'clicked'});

}

在发出值的下一次单击事件中,它来自导航组件。

this.shared.savePersonalInfo.subscribe(resp => {
 if (resp.value != "") {
 }
});

试图在此处获取发出的值的代码 它最初需要获取最新值 它变空 这是另一个组件,在下次单击时需要将数据保存在个人组件中,因此如果条件数据是否可用,则在它发送的代码中的其他位置写入object 在这种情况下如何区分,因为它得到了对象。

标签: angularrxjsobservablesubject

解决方案


您可以使用 skipWhile 运算符来检查发出的值是否为空。以下代码块可能会对您有所帮助。

this.shared.savePersonalInfo.pipe(skipWhile(value => !value)).subscribe(res => {
 console.log(res);
});

推荐阅读