使用 Apple 的新组合框架,我想从列表中的每个元素发出多个请求。然后我想从减少所有响应中得到一个单一的结果。基本上,我想从发布者列表转到拥有响应列表的单个发布者。
我曾尝试制作出版商列表,但我不知道如何将该列表简化为单个出版商。而且我尝试制作一个包含列表的发布者,但我无法平面映射发布者列表。
请看“createIngredients”函数
func createIngredient(ingredient: Ingredient) -> AnyPublisher<CreateIngredientMutation.Data, Error> {
return apollo.performPub(mutation: CreateIngredientMutation(name: ingredient.name, optionalProduct: ingredient.productId, quantity: ingredient.quantity, unit: ingredient.unit))
.eraseToAnyPublisher()
}
func createIngredients(ingredients: [Ingredient]) -> AnyPublisher<[CreateIngredientMutation.Data], Error> {
// first attempt
let results = ingredients
.map(createIngredient)
// results = [AnyPublisher<CreateIngredientMutation.Data, Error>]
// second attempt
return Publishers.Just(ingredients)
.eraseToAnyPublisher()
.flatMap { (list: [Ingredient]) -> Publisher<[CreateIngredientMutation.Data], Error> in
return list.map(createIngredient) // [AnyPublisher<CreateIngredientMutation.Data, Error>]
}
}
我不确定如何获取一组发布者并将其转换为包含数组的发布者。
“[AnyPublisher]”类型的结果值不符合闭包结果类型“Publisher”