Redux Can';在取消请求之前,我不会被录取
在分派Redux Can';在取消请求之前,我不会被录取,redux,rxjs,redux-observable,Redux,Rxjs,Redux Observable,在分派SEARCH之后,我试图取消一个AJAX请求,但同时保持可观察到的侦听。我正在使用takeUntil并等待类型为CLEAR\u SEARCH\u RESULTS的操作来取消请求 这是我的史诗: const searchEpic = action$ => action$.ofType(SEARCH).pipe( debounceTime(500), switchMap(({ payload }) => search(
SEARCH
之后,我试图取消一个AJAX请求,但同时保持可观察到的侦听。我正在使用takeUntil
并等待类型为CLEAR\u SEARCH\u RESULTS
的操作来取消请求
这是我的史诗:
const searchEpic = action$ =>
action$.ofType(SEARCH).pipe(
debounceTime(500),
switchMap(({ payload }) =>
search(query).pipe(
map(({ response }) => SearchActions.searchSuccess(response)), // dispatches SEARCH_SUCCESS
takeUntil(
action$.ofType(CLEAR_SEARCH_RESULTS)
)
)
)
)
编辑:我有一个Redux记录器,它按以下顺序输出已调度的操作:
搜索
搜索
搜索
搜索
清除搜索结果
搜索成功
(每个
SEARCH
都是一个按键)我通过将takeUntil
移动到switchMap
之外并在其后面放置一个repeat()
来解决它,如下所示:
const searchEpic = action$ =>
action$.ofType(SEARCH).pipe(
debounceTime(500),
switchMap(({ payload }) =>
search(query).pipe(
map(({ response }) => SearchActions.searchSuccess(response))
)
),
takeUntil(action$.ofType(CLEAR_SEARCH_RESULTS)),
repeat()
)
问题是epic只在去BounceTime
500毫秒后才开始监听清除搜索结果
,这不是我想要的
所有的功劳都来自于不断地发现并向我指出它。那么问题出在哪里呢?有错误吗?你现在拥有的看起来很好。你怎么知道它没有被取消,或者它不只是在请求完成后出现。我已经编辑了我的帖子,请看一看你有什么好看的,所以问题可能在其他地方。否则,制作一个演示来重现这个问题。嘿@martin,很抱歉反应太晚了。这是一份带有演示的回购协议: