Redux Observable取消先前的请求

时间:2020-09-10 17:40:20

标签: reactjs rxjs axios redux-observable

我有一部史诗,可以发出多种动作


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个请求,如果有任何参数更改,我们将再次调用它。这会向服务器调用很多请求,但不会取消先前的请求。怎么样 如何取消以前的请求

1 个答案:

答案 0 :(得分:0)

在给定的示例中,使用switchMap代替mergeMapmergeMap不会取消任何由先前值引起的订阅,但是switchMap会取消。