我无法创建一个可重复的示例,所以请耐心等待。
我创建了一个在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不同,那么这可能会帮助我弄清楚我的问题所在。