我有一个可观察的A和另一个可观察的B(这是一个行为主体).我需要B像信号量一样工作,当我得到a中的值变化时,如果B为真,a执行一些逻辑,否则等待B的需要变为真.我try 了不同的方法,但没有成功..

类似于在C中使用sem\u wait for waiting 0 value

A
 .pipe(
    mergeMap(aval => B.filter(f => f))
   // Here i need to wait B to become true
 )
 .subscribe(v => dosomething)

谢谢大家!

推荐答案

判断这个.当B event变为true时,下面的代码将调用每个A event(如果您一次只想要一个A event,只需将mergeMap操作符更改为switchMap,如果您想要保留正确的顺序,则将其更改为concatMap,并将dosomething移到take(1)行下方的tap操作符)

A.pipe(
    mergeMap(aval => B.pipe(
        filter(f => f), 
        map(()=> aval),
        take(1) // you need to unsubscribe the inner observable
        )
    )
) 
.subscribe(v => dosomething)

Angular相关问答推荐

从Angular 14更新到15个多边形.ts问题

AG网格Angular 快捷菜单调用函数

Angular -移位在2个示波器中读取

Ngrx Select 器返回部分对象

react 形式之间的循环关系

找不到模块webpack dev服务器

使用指令的 Angular 自定义验证在 ng-change 中无法正常工作

如何检测 Angular Universal 预渲染版本?

错误:在@angular/core中找不到导出ɵivyEnabled(导入为ɵivyEnabled)

Angular:为什么在我的自定义 ErrorHandler 中订阅主题不触发?

您如何链接需要多个先前可观察对象的依赖订阅

如何从 RxJS 重试中排除某些 url

从 angular 11 升级到 angular 12 后,我的项目没有使用优化参数进行编译

单选按钮的Angular2 Reactive Forms formControl

res.json() 不是函数

导航到同一条route路由不刷新组件?

Angular2 - 如何开始以及使用哪个 IDE

Angular 2 setinterval() 继续在其他组件上运行

Angular 2 router.navigate

如何使用formControlName和处理嵌套的formGroup?