|
1
1
如果你想保持你使用的原始模式(嵌套订阅),你应该把“getCommunityById”http调用移动到“dataService.getCode”回调中,它就会起作用。这里的关键是要理解“dataService.getCode”将返回一个可观测值(不存在的数据),而你的else分支使用已经存在的值(params.id)。 解决这个问题的正确方法是在管道()中使用concatMap()并链接这些操作。在concatMap()回调函数中,您将处理if-else分支逻辑,在那里您将返回this.daService.getCode或Observable.of(params.id),然后在下一个concatMap。 |
![]() |
2
1
你可以考虑将你的
代码说明提取参数
我正在使用
下一步,我们定义一个属性
最后的步骤是
|
![]() |
3
0
将代码更改为以下内容:-
Mergemap操作符将按顺序保存您的调用,我还修改了代码使其更短。 |
![]() |
4
0
我想你可以用
将一个响应转换为您使用的连续请求所需的参数
操作员
这里有一个例子
|
![]() |
5
0
尽管你可以使用rxjs来链接可观察对象。还有另一种简单的方法可以解决你的问题。如果你把任何东西放在可观察对象的订阅中,它就会被执行,所以你需要把它作为一个单独的函数移到外面。它应该能帮助你防止打电话给你的 dataService.getCommunityById 功能。
这是使用rxjs的另一种方法,这更容易理解。您还可以使用rxjs运算符,如 concatMap , 属于 正如所建议的 梅德哈特·马哈茂德 和 穆罕默德·坎·通布尔 . |
![]() |
Coding Dog · Python异步函数不工作。继续跑 1 年前 |
![]() |
cyka · 强制JavaScript等待单击(循环) 2 年前 |
![]() |
CodeMonkey · 无法访问React[重复]中的对象值 2 年前 |
![]() |
Tim · 为异步方法返回列表的最佳方式是什么? 2 年前 |
![]() |
dapidmini · 未捕获的承诺嵌套异步函数承诺错误处理 2 年前 |