Javascript 如何在RxJS中按ID去抖动

Javascript 如何在RxJS中按ID去抖动,javascript,redux,rxjs,reactive-programming,Javascript,Redux,Rxjs,Reactive Programming,我的问题是下一个:我想消除我的应用程序喜欢的功能。我使用操作在我的应用程序中进行更改,例如: dispatch(likePost(1)) // => dispatch({ type: 'LIKE_POST', id: 1 }) 举下一个例子: 我在以下时间发送操作:0 dispatch(likePost(1)) 这会触发我的行动来源: actionSource$. pipe( filter(isActionOf(likePost)), debounceTi

我的问题是下一个:我想消除我的应用程序喜欢的功能。我使用操作在我的应用程序中进行更改,例如:

dispatch(likePost(1)) // => dispatch({ type: 'LIKE_POST', id: 1 })
举下一个例子:

我在以下时间发送操作:0

dispatch(likePost(1))
这会触发我的行动来源:

actionSource$.
   pipe(
      filter(isActionOf(likePost)),
      debounceTime(500)
      mapTo('make-api-request-to-like-the-post')
   )
所以看起来是这样的:

--DISPATCH(LIKE(1))---DEBOUNCE(500)---MAKE_API_CALL(1)---->
但这有一个问题,如果我采取下一步行动会发生什么情况:

dispatch(likePost(1)) // at time 0ms
dispatch(likePost(2)) // at time 200ms
这里我们遇到了一个问题,因为likePost2取消了likePost1的公告,导致只使用likePost2发出请求

--DISPATCH(LIKE(1))--200ms--DISPATCH(LIKE(2))--DEBOUNCE(500)--MAKE_API_CALL(2)--->
那么,我怎样才能按id消除抖动,或者按id使其成为唯一的分支。

您可以按id对事件进行处理,然后分别应用于每个组

例如:

dispatch(likePost(1)) // => dispatch({ type: 'LIKE_POST', id: 1 })
常数{of}=rxjs;//=requirerxjs const{map,mergeMap,groupBy,debounceTime}=rxjs.operators;//=requirerxjs/操作员 1,1,2,3,1,1 groupByid=>id, mergeMaplikeById$=> likeById$.pipe 脱胶时间500 .subscribee=>console.loge;