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,很抱歉反应太晚了。这是一份带有演示的回购协议: