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;