我可以拨打以下服务电话:
产品服务.GetAllProducts()
产品服务.删除产品()
产品服务.GetCategories()
产品服务.DeleteCategory()
在 sudo 代码中,我需要在组件中执行以下操作:
使用productService.GetAllProducts() 获取产品列表。
循环遍历产品列表并为每个产品调用productService.DeleteProduct()。
一旦我确认上述删除全部完成(由于数据库限制),我就需要使用productService.GetCategories() 获取类别列表。循环遍历每个类别并调用productService.DeleteCategory()。
我知道如果我有更好的后端调用来进行批量删除,我的生活会容易得多,但在这种情况下我别无选择。我需要遵循获取列表、循环遍历它、对每个项目进行单独删除的模式。
是否有可能使用 flatMap 和可观察的完整参数来做我想做的事情?我最大的问题是在搜索和删除所有类别之前知道代码何时完成删除所有产品。
你可能想尝试一些类似的事情
productService.GetAllProducts()
.switchMap(
products => forkJoin(products.map(product => productService.DeleteProduct(product)))
)
.switchMap(() => productService.GetCategories())
.switchMap(
categories => forkJoin(categories.map(category => productService.DeleteCategory(category)))
)
.subscribe(() => console.log('done'))
整个想法如下
- GetAllProducts 返回一个产品数组,该数组传递为
参数为第一个
switchMap
- Products 数组被转换,通过
map
,进入一个数组
Observables 是 DeleteProduct 的结果 - 数组
Observable 被传递给第一个forkJoin
作为其参数
-
forkJoin
当它收到的所有 Observables 为
参数完整,因此当所有产品
已被删除
- 对于类别重复相同的推理
我不确定代码在语法上是否完美,但它应该足以让您了解如何继续。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)