Javascript 带承诺的条件可观测呼叫

Javascript 带承诺的条件可观测呼叫,javascript,rxjs,observable,Javascript,Rxjs,Observable,我正在尝试用observable做一些事情,但没有技巧:) 我有类似的东西(伪代码): 所以,我要做的是,如果第一个mergeMap中的条件为真,不要转到第二个mergeMap。此代码似乎正在运行。但是怎样才能在第一个mergeMap中调用并等待承诺呢? 或者这是一种错误的方法吗?如果你选择完全的接收方式,你不需要等待 someobservable$.pipe( mergeMap(param1 => from(promise).pipe(filter(conditi

我正在尝试用observable做一些事情,但没有技巧:) 我有类似的东西(伪代码):

所以,我要做的是,如果第一个
mergeMap
中的条件为真,不要转到第二个
mergeMap
。此代码似乎正在运行。但是怎样才能在第一个
mergeMap
中调用并等待承诺呢?
或者这是一种错误的方法吗?

如果你选择完全的接收方式,你不需要等待

someobservable$.pipe(
  mergeMap(param1 =>  
        from(promise).pipe(filter(condition=>condition),mapTo(param1))
  ),
);

如果您选择完整的接收方式,则无需使用wait

someobservable$.pipe(
  mergeMap(param1 =>  
        from(promise).pipe(filter(condition=>condition),mapTo(param1))
  ),
);

你能在合并地图之前合并吗

combineLatest([
  someobservable$,
  from(promise)])
.pipe(
  filter(([_, condition]) => !!condition),
  mergeMap(([param1]) => doSomeStuff))

这在一定程度上取决于可观察到的$的行为。如果它只发射一次,这将等待来自(promise)的
发射,并从
someobservable$
来自(promise)
发送最后一次发射。但它似乎就是您想要的,而没有关于用例的更多信息:)


(注意es6数组解构语法。
CombineTest
返回一个排放数组。)

您能在合并映射之前进行合并吗

combineLatest([
  someobservable$,
  from(promise)])
.pipe(
  filter(([_, condition]) => !!condition),
  mergeMap(([param1]) => doSomeStuff))

这在一定程度上取决于可观察到的$的行为。如果它只发射一次,这将等待来自(promise)
发射,并从
someobservable$
来自(promise)
发送最后一次发射。但它似乎就是您想要的,而没有关于用例的更多信息:)


(注意es6数组解构语法。
CombineTest
返回一个发射数组。)

注意
Wait
期望
mergeMap
回调是
async
,而不是
mergeMap
必须返回一个可观察的,而不是Promise.hm,那么我如何解决这个问题呢?
mergeMap
与Promises一样使用Promises。无论如何,您可以在返回它之前使用(param1).pipe的
(mergeMap(param1=>做一些事情))
,但我的承诺与
param1
无关。不管怎样,我想我已经明白了。刚刚使用的
return from(promise).pipe(/**/)
在first
mergeMap
中注意
wait
期望
mergeMap
回调是
async
,而不是
mergeMap
必须返回一个可观察的,而不是Promise.hm,那么我如何解决这个问题呢?
mergeMap
与Promises一样使用Promises。无论如何,您可以在返回它之前使用(param1).pipe的
(mergeMap(param1=>做一些事情))
,但我的承诺与
param1
无关。不管怎样,我想我已经明白了。刚刚使用的
return from(promise).pipe(/**/)
first
mergeMap