我有一部史诗,可以发出多种动作
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个请求,如果有任何参数更改,我们将再次调用它。这会向服务器调用很多请求,但不会取消先前的请求。怎么样 如何取消以前的请求
答案 0 :(得分:0)
在给定的示例中,使用switchMap
代替mergeMap
。 mergeMap
不会取消任何由先前值引起的订阅,但是switchMap
会取消。