我对rxjs很陌生。我只想在可观察对象停止发射数据后触发redux动作。
const removeUsersEpic = (action$, store) =>
action$
.ofType(REMOVE_USERS)
.mergeMap(action =>
Rx.Observable.from(action.payload).mergeMap(user => {
return Rx.Observable.authorizedAjax({
headers: { 'Content-Type': 'application/form-data' },
method: 'DELETE',
url: `${consoleBaseUrl}/api/v1/users/${user}`,
body: {}
})
.mergeMap(() =>
Rx.Observable.of(
setUserDeleteCount(store.getState().components.userListComponentData.deletedUserCount + 1),
getUserCount()
)
)
.catch(error => {
console.log(error)
return Rx.Observable.of(
setUserDeleteExceptionCount(
store.getState().components.userListComponentData.deleteUserExceptionCount + 1
),
getUserCount()
)
})
}).map(()=>{return setDeleteOperationStatus(true)})
)
.catch(error => {
console.log(error)
return Rx.Observable.empty()
})
在此示例中,我试图在最后触发setDeleteOperationStatus
。 action.payload
只是要删除的用户ID列表。我正在遍历id并逐一删除它们。在循环结束时,我只想执行一些操作。我尝试使用.map
,mergemap
,但是没有用。
答案 0 :(得分:0)
看起来像是冷观测(它们已经结束了) 如果是这样,则可以使用“ .subscribe()”的“ onCompleted”方法
.subscribe(onNext(),onError(),onCompleted())
如果是可观察到的热点(例如事件发射器之类的东西) 您必须根据所获得的信息使用诸如bufferCount()或bufferTime()之类的缓冲区。
对不起,简而言之很难解释冷/热观测值