【问题标题】:rxjs subscribe to function - wait for eventrxjs 订阅函数 - 等待事件
【发布时间】:2020-10-14 01:35:54
【问题描述】:

我有以下代码:

runThisFunction.subscribe();

在这个函数中 - 我有 2 个场景。一个立即返回一个可观察对象,并在它显示一个模态并且用户单击“确定”之后 - 然后发送可观察对象。我的问题是我可以立即返回而没有任何问题,但是如何延迟发送 obvservable 直到用户点击确定? 我收到一个订阅未定义的错误。

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;
}

【问题讨论】:

  • 嗯,函数runThisFunction 必须被调用。也就是说,您必须执行“runThisFunction()”,而不仅仅是“runThisFunction”。 “runThisFunction”是方法引用,不是方法调用。

标签: angular rxjs


【解决方案1】:

下面试试;

  • 定义一个Subject,比如processConfirmedSubject$。除非我们在 Subject 上调用 next() 函数,否则主题不会发出
  • 定义一个函数来触发processConfirmedSubject$。这个函数将只包含processConfirmedSubject$.next()
  • runThisFunction() 分配给变量myFunction$
  • 使用来自rxjscombineLatest 组合这两个值
  • 订阅组合的 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() 时,可观察对象都会重新评估其行为,就像确认对话一样

【讨论】:

    猜你喜欢
    • 2021-11-16
    • 1970-01-01
    • 2022-12-20
    • 2017-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 2021-05-06
    相关资源
    最近更新 更多