【问题标题】:Redux Observable cancel previous requestsRedux Observable 取消之前的请求
【发布时间】:2020-12-29 06:23:25
【问题描述】:

我有一个可以发出多个动作的史诗


export const abc = action$ =>
  action$.pipe(
    filter(isActionOf(fetchAllSearchOptions)),
    mergeMap((action) => {
      return concat(
        concat(
          of(fetchOptions({term: 'a', ...action.payload})),
          of(fetchOptions({term: 'b', ...action.payload})),
          of(fetchOptions({term: 'c', ...action.payload})),
          ),
          concat(
            of(fetchOptions({term: 'd', ...action.payload})),
            of(fetchOptions({term: 'e', ...action.payload})),
            of(fetchOptions({term: 'f', ...action.payload})),
        )
      )
    })
  );

fetchOptions 具有 mergeMap,因此可以发送所有调用,但它不会取消参数更改时挂起的请求。

这会向服务器调用 6 个请求,如果有任何参数更改,我们会再次调用它。这会向服务器调用大量请求,但不会取消之前的请求。如何 如何取消之前的请求

【问题讨论】:

    标签: reactjs rxjs axios redux-observable


    【解决方案1】:

    在给定的示例中,使用switchMap 而不是mergeMapmergeMap 不会取消任何由先前值产生的订阅,但 switchMap 总是这样做。

    【讨论】:

      猜你喜欢
      • 2018-10-14
      • 2020-06-05
      • 1970-01-01
      • 2019-04-24
      • 2017-10-14
      • 2016-12-29
      • 2020-06-23
      • 2013-08-03
      • 1970-01-01
      相关资源
      最近更新 更多