rxjs订阅功能-等待事件

时间:2020-10-13 16:57:48

标签: angular rxjs

我有以下代码:

runThisFunction.subscribe();

在此功能中-我有2种情况。一个立即返回一个可观察对象,并在显示一个模态并且用户单击“确定”后,再发送可观察对象的对象。我的问题是我可以立即返回,没有任何问题,但是如何延迟发送可观察对象,直到用户单击确定? 我收到订阅未定义的错误。

runThisFunction() { //This is what I have and it returns fine.  How do I do the same but after a modal event?
   let result = new Observable(observable => observable.next(data));

   return result;
}

1 个答案:

答案 0 :(得分:1)

尝试以下;

  • 定义一个SubjectprocessConfirmedSubject$。除非我们在next()
  • 上调用Subject函数,否则主题不会发出
  • 定义一个函数来触发processConfirmedSubject$。该函数将仅包含processConfirmedSubject$.next()
  • runThisFunction()分配给变量myFunction$
  • 使用combineLatest中的rxjs组合两个值
  • 订阅组合的Observable

最后您应该有类似的东西

processConfirmedSubject$ = new Subject();
processConfirmed$ = this.processConfirmedSubject$.asObservable();
confirmAction() {
  this.processConfirmedSubject$.next();
}
myFunction$ = runThisFunction();
combinedFunction$ = combineLatest([this.myFunction$, this.processConfirmed$]).pipe(
  map(([myFunction]) => myFunction)
)

ngOnInit() {
  combinedFunction$.subscribe()
}

使用上述方法,每当您调用函数confirmAction()时,可观察到的重估就像确认对话框一样