问题标签 [switchmap]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
angular - 如果外部 observable 返回错误,则强制调用 switchMap 的内部 observable
我的代码:
可能存在无法检索位置的情况(谷歌浏览器中没有 https,或者用户不允许)。
在这种情况下,我仍然需要返回return this.get('/places', { point: this.userService.coords });
就在这个电话中,this.userService.coord
将是null
。
服务代码:
目前 - 如果外部 observable 返回错误,则内部 observable 不会被调用(返回)。
angular - 第二个订阅不会从 RXJS 中的第一个订阅的 switchMap 开始
我有这个工作代码。它从路由器获取 ID 并将其作为参数应用,以加载组件的数据。
然后,我尝试使用更好的方法,并希望在第一个订阅完成时调用第二个订阅。根据此答案中的第二个示例,我应该分享第一个结果,然后切换 map 以取消订阅并继续下一个。所以我实现了以下。
遗憾的是,这不会调用服务器,也不会将数据传递给客户端。在尝试了几次更改后,由于缺乏想法,我放弃了。
这两种方法之间的显着区别是什么?我在哪里对第二个样本的解释感到困惑?
angular - NgRx 和 RxJS:依赖状态选择器
我有一个组件订阅构造函数中的多个状态片。
第一个订阅订阅对象数组,而第二个订阅调用另一个组件 (@ViewChild(PComponent) PGrid) 中的方法。组件中的LoadData()
方法PGrid
依赖于 this.Data 来自第一个订阅。
当我运行代码时,我对此没有定义。数据虽然selectedProcess.Data
有价值
这意味着当状态的第二部分被订阅并且LoadData()
方法被调用时,它会因为this.Data
未定义而出错。
我相信这是由于 Observable 的工作方式以及由于它们是异步的,因此一个函数可能不会在另一个函数之前返回值。
问题:1 为什么this.Data= selectedProcess.Data;
设置this.Data
为 undefined 即使 selectedProcess.Data
有值
问题 2:我看过,flatMap
但switchMap
由于我是 RxJS 和 NgRx 的新手,我对如何利用它们感到困惑。有小费吗?
PS 在类似的说明中,我在我的 中分别订阅了 2 个切片ngOnInit()
,这是首选方式还是应该将它们结合起来?
angular - ngrx/效果的 Angular 6 jasmine 测试用例
我正在尝试为效果编写测试用例。任何人都可以帮助我如何测试其中的 switchMap 功能。提前致谢。这是我的功能
还有我的规格文件
angular - switchMapTo 后 switchMapTo 的使用
预期行为:
1) 获取所有任务taskService.getAllTasks()
;
2)将结果任务传递给filterService.addFilterableTasks()
;
3) 获取任务filterService.getFilteredTasks()
;
4)将结果任务传递给searchService.addTasks()
;
5) 获取任务searchService.getBoardFilteredTasks()
。
当前行为:
没有第 (3) 行:
第 1 行 => 控制台中的预期数组
第 2 行 => 正确的已通过任务数
使用第 (3) 行:
第 1 行和其他所有内容都不会被触发。一个错误说没有任务searchService.getBoardFilteredTasks
问题:
是否允许一个switchMapTo()
接一个地使用?
还是有另一种实现方式?
angular - 已解决 - 当一个接一个地运行 2 个 observable 时 - 根据第一个得到结果
我有 2 个返回 Observables 的函数,我想一个接一个地执行。 函数1返回
和function2返回类型
我希望执行它们的函数根据 function1 的结果返回布尔 值。我在运行第一个function1时设法这样做了,但现在我想先运行function2,我得到了错误:
查看我的代码:这有效:
这失败了:
解决方案:
arrays - 在 RXJS 中传递给 switchMap() 时对象数组的奇怪行为
我有一个简单的目标,即创建一个可观察到的可发出世界上所有国家/地区列表的对象。observable 的类型是Country[]
,即存储值被键入为对象数组。但是,当传递给 时switchMap
,它会神奇地转换为 type Country
。我不知道是什么导致了这种行为,如果不是,碰巧在我这边。这是有问题的功能:
如果您有问题:
FilteredArrayResponse
是一个通用接口,其data
属性实际上包含数组- 完整的错误信息是
Type 'Observable<Country | Country[]>' is not assignable to type 'Observable<Country[]>'.
- 我的猜测是,它以某种方式
switchMap
将 Observable 的数组与 Observable 的数组混淆了...... - 的返回类型
result.data
始终是数组 - 家庭中的其他操作员
map
表现出相同的行为
angular - Angular Service 未执行 switchmap
我有一个不会进入的开关图。我今天早些时候让它工作了,但由于某种原因,现在它没有输出alert("INSIDE SWITCHMAP")
或 switchmap 中的 console.logs。
还有这个小块的警报
输出正确的值,因此它们都不为空。
有什么建议么?感谢您的帮助!
确认投标组件
api调用
angular - 如何完成 rxjs switchmap observable?
我在我的 Angular 8 项目中有一个 observable,并订阅了 ngOnInit()。
但是 complate 方法不会触发订阅。
我订阅的chartData
类型是BehaviourSubject
. 所以我不订阅urlSubject
。因为 url 可能随时更改搜索或过滤参数。
我正在使用finilize,但它不起作用。我认为这个问题与 switchmap 内部孔隙有关。如何完成并将加载设置为 false?
javascript - 使用 rxjs 6 如何创建带有缓存的可取消 Web 请求管道,并限制同时发生的请求数量
我希望有人能够指出我正确的方向,因为我正在努力结合并发和取消rxjs 中排队请求的能力。我将尝试在连续事件中解释这一点。假设我们有 observable A,它接收一个字符串数组。
事件:A 观察到:['dog', 'cat', 'elephant', 'tiger'] 下游检查字符串网络响应是否被缓存,如果它存在于缓存中则从缓存中获取它,如果没有则从缓存中请求它web 并使用 publishReplay / shareReplay 将 observable 保存到缓存中。一次发生 2 个网络请求的限制,因此它尝试从 api 获取“狗”和“猫”(此操作需要 2000 毫秒以上)。1000 毫秒后,A 观察到另一组值:['dog', 'rat', 'horse', 'rabbit']。
接下来应该发生以下情况。我不希望取消“狗”和“猫”请求,我希望他们完成他们的请求,但我想忽略第一个请求中的“大象”和“老虎”。一旦 'dog' 和 'cat' 从第二帧得到他们的响应'rat' 和 'horse' 应该从网络请求,最后一旦其中任何一个解析 'rabbit' 被请求。
这是我当前的代码。我尝试在 networkObservable 的 defer 和 from 之间切换,但行为不同,这也不是我想要的。
这导致输出:
这接近想要的行为,但有一个明显的缺陷。Rat and horse 被请求并且不等待 dog 和 cat 在被处决之前解决。但是,“老虎”和“大象”已被妥善处理,因此功能正常。
我是否必须创建一个单独的主题来处理请求?