在 TCA 中:不在 reducer 中时如何从 Effect 中提取?

In TCA: How to extract from Effect when not in the reducer?

我在 Effect<[Int], Error> 中收到了来自出版商的结果 如何将 [Int] 分配给变量?

虽然我可以用这个得到结果:

         case .reviewed:
               return environment.networkQuery.reviewed(pageCount: 1)
                  .catchToEffect()
                  .map(BespokeAction.processQueryResults)
         case let .processQuestionResult(.success(ids)):
             ...
  
         case let .processQuestionResult(.failure(error)):
            print(error)
           ...

我想在 reducer 之外使用发布者:

let values: Effect<[Question], Error> = environment.networkQuery.reviewed(pageCount: 1)

成功后如何values提取数组?

注意:这是对我之前发布的问题的更精细解决:

虽然代码大部分都不错,但我从未看到结果。

这是因为代码在函数内部,并且可取消随着函数返回而消失。当可取消超出范围时,发布者立即停止。

我将 resultsreturnValues 移动到视图中,现在在 receiveValue 闭包中更新 @State 属性:

   @State var returnValues = [Question]()
   @State var results: AnyCancellable? = nil

    ....

   func runQuery() {
     let env = BespokeEnvironment(mainQueue: .main, networkQuery: NetworkQuestionRequestor())
      results = env.networkQuery.reviewedQuestionsQuery(pageCount: 1)
            .sink(
               receiveCompletion: { print([=10=])},
               receiveValue: { values in
                  returnValues.append(contentsOf: values)
               })
   }