我无法创建一个可重现的例子,所以请耐心等待 .

我有一个我创建的库,它在Observable中包含异步API响应 . 大大简化,该库具有像 lib.ask("end-point") 这样的函数,它返回一个Observable,其中API调用的响应是该终点 .

我想在每次发生另一个事件时运行该API调用 . 我正在尝试使用某个版本的mergeMap / switchMap / concatMap对其进行建模,具体取决于具体情况 . 我们以mergeMap为例 .

如果我使用 Map mergeAll,它的工作正常 . 我是这样写的:

var responses$ = event$.pipe(
    map(()=>lib.ask("end-point")),
    mergeAll()
);

当我订阅回复$时,我得到了回复!

但是,如果我用mergeMap重写相同的链,它不起作用:

var responses$ = event$.pipe(
    mergeMap(()=>lib.ask("end-point"))
);

在这种情况下,当我订阅时,我没有得到任何结果 . 几乎看起来好像内部订阅永远不会被制作 .

就像我说的那样,我正在努力创造一个可重复的例子 . 我试图调试RxJS做什么来试图找到这个东西失败的地方,但是还没弄清楚 . 如果有人能想到为什么或者在什么情况下mergeMap的行为与map mergeAll不同,那可能会帮助我找出问题所在 .