Redux RXJS订阅主题-操作必须是普通对象。使用自定义中间件进行异步操作
我想订阅一个主题。这在第一次按预期工作,但在第二次抛出上面的错误,我不知道在哪里修复它Redux RXJS订阅主题-操作必须是普通对象。使用自定义中间件进行异步操作,redux,rxjs,Redux,Rxjs,我想订阅一个主题。这在第一次按预期工作,但在第二次抛出上面的错误,我不知道在哪里修复它 export function uploadSceneFile(action$, store) { return action$.ofType(CREATE_SCENE_SUCCESS) .mergeMap(({payload}) => UploadSceneWithFile(payload) .map(res => { if (res.
export function uploadSceneFile(action$, store) {
return action$.ofType(CREATE_SCENE_SUCCESS)
.mergeMap(({payload}) =>
UploadSceneWithFile(payload)
.map(res => {
if (res.progress > 0){
return { type: UPLOAD_SCENE_PROGRESS, scene: res }
}
else if(res.progress === -1){
return { type: UPLOAD_SCENE_SUCCESS, scene: res }
}
})
)
}
它被设计为监听正在创建的场景,发送上传进度通知,然后发送成功消息
该错误在第二次运行时直接从该行抛出
onProgress:(val)=>subject$.next({…场景,进度:val})
错误消息
Subscriber.js:242 Uncaught Error: Actions must be plain objects. Use custom middleware for async actions.
at Object.performAction (<anonymous>:1:40841)
at liftAction (<anonymous>:1:34377)
at dispatch (<anonymous>:1:38408)
at createEpicMiddleware.js:59
at createEpicMiddleware.js:59
at SafeSubscriber.dispatch [as _next] (applyMiddleware.js:35)
at SafeSubscriber../node_modules/rxjs/Subscriber.js.SafeSubscriber.__tryOrUnsub (Subscriber.js:238)
at SafeSubscriber../node_modules/rxjs/Subscriber.js.SafeSubscriber.next (Subscriber.js:185)
at Subscriber../node_modules/rxjs/Subscriber.js.Subscriber._next (Subscriber.js:125)
at Subscriber../node_modules/rxjs/Subscriber.js.Subscriber.next (Subscriber.js:89)
at SwitchMapSubscriber../node_modules/rxjs/operators/switchMap.js.SwitchMapSubscriber.notifyNext (switchMap.js:126)
at InnerSubscriber../node_modules/rxjs/InnerSubscriber.js.InnerSubscriber._next (InnerSubscriber.js:23)
at InnerSubscriber../node_modules/rxjs/Subscriber.js.Subscriber.next (Subscriber.js:89)
at MergeMapSubscriber../node_modules/rxjs/operators/mergeMap.js.MergeMapSubscriber.notifyNext (mergeMap.js:145)
at InnerSubscriber../node_modules/rxjs/InnerSubscriber.js.InnerSubscriber._next (InnerSubscriber.js:23)
at InnerSubscriber../node_modules/rxjs/Subscriber.js.Subscriber.next (Subscriber.js:89)
at MergeMapSubscriber../node_modules/rxjs/operators/mergeMap.js.MergeMapSubscriber.notifyNext (mergeMap.js:145)
at InnerSubscriber../node_modules/rxjs/InnerSubscriber.js.InnerSubscriber._next (InnerSubscriber.js:23)
at InnerSubscriber../node_modules/rxjs/Subscriber.js.Subscriber.next (Subscriber.js:89)
at MapSubscriber../node_modules/rxjs/operators/map.js.MapSubscriber._next (map.js:85)
at MapSubscriber../node_modules/rxjs/Subscriber.js.Subscriber.next (Subscriber.js:89)
at Subject../node_modules/rxjs/Subject.js.Subject.next (Subject.js:55)
at S3Upload.onProgress (uploadSceneFile.js:27)
at S3Upload.<anonymous> (s3upload.js:139)
Subscriber.js:242未捕获错误:操作必须是普通对象。使用自定义中间件进行异步操作。
在对象执行时(:1:40841)
提升时(:1:34377)
调度时(:1:38408)
在createEpicMiddleware.js:59
在createEpicMiddleware.js:59
SafeSubscriber.dispatch[as_next](applyMiddleware.js:35)
在SafeSubscriber../node_modules/rxjs/Subscriber.js.SafeSubscriber.\uu tryOrUnsub(Subscriber.js:238)
在SafeSubscriber../node_modules/rxjs/Subscriber.js.SafeSubscriber.next(Subscriber.js:185)
在Subscriber../node_modules/rxjs/Subscriber.js.Subscriber.\u next(Subscriber.js:125)
在订阅服务器处../node_modules/rxjs/Subscriber.js.Subscriber.next(Subscriber.js:89)
在SwitchMapSubscriber../node_modules/rxjs/operators/switchMap.js.SwitchMapSubscriber.notifyNext(switchMap.js:126)
在InnerSubscriber../node_modules/rxjs/InnerSubscriber.js.InnerSubscriber.\u下一步(InnerSubscriber.js:23)
在InnerSubscriber../node_modules/rxjs/Subscriber.js.Subscriber.next(Subscriber.js:89)
在MergeMapSubscriber../node_modules/rxjs/operators/mergeMap.js.MergeMapSubscriber.notifyNext(mergeMap.js:145)
在InnerSubscriber../node_modules/rxjs/InnerSubscriber.js.InnerSubscriber.\u下一步(InnerSubscriber.js:23)
在InnerSubscriber../node_modules/rxjs/Subscriber.js.Subscriber.next(Subscriber.js:89)
在MergeMapSubscriber../node_modules/rxjs/operators/mergeMap.js.MergeMapSubscriber.notifyNext(mergeMap.js:145)
在InnerSubscriber../node_modules/rxjs/InnerSubscriber.js.InnerSubscriber.\u下一步(InnerSubscriber.js:23)
在InnerSubscriber../node_modules/rxjs/Subscriber.js.Subscriber.next(Subscriber.js:89)
在MapSubscriber../node\u modules/rxjs/operators/map.js.MapSubscriber.\u next(map.js:85)
在MapSubscriber../node_modules/rxjs/Subscriber.js.Subscriber.next(Subscriber.js:89)
在Subject../node_modules/rxjs/Subject.js.Subject.next(Subject.js:55)
在S3Upload.onProgress(uploadSceneFile.js:27)
在S3Upload。(s3upload.js:139)
在您的上传场景文件的内部映射中,您有一个if
语句,后跟一个else if
语句,如果两者都不是true
,映射将返回未定义的,而不是操作
.map(res=>{
如果(恢复进度>0){
返回{type:UPLOAD\u SCENE\u PROGRESS,SCENE:res}
}
else if(res.progress==-1){
返回{type:UPLOAD\u SCENE\u SUCCESS,SCENE:res}
}
//这里应该返回一个操作!
})
请注意,当传递未定义的操作时,确定某个动作是否为普通对象的方法将影响您看到的错误。在内部映射中有if
和else if
-在上传场景文件中
-那么它是否可能返回未定义的?我爱你。似乎奏效了。。把它作为答案,我会把它标对的。(我添加了一个未定义的返回操作,它似乎使错误消失了)
Subscriber.js:242 Uncaught Error: Actions must be plain objects. Use custom middleware for async actions.
at Object.performAction (<anonymous>:1:40841)
at liftAction (<anonymous>:1:34377)
at dispatch (<anonymous>:1:38408)
at createEpicMiddleware.js:59
at createEpicMiddleware.js:59
at SafeSubscriber.dispatch [as _next] (applyMiddleware.js:35)
at SafeSubscriber../node_modules/rxjs/Subscriber.js.SafeSubscriber.__tryOrUnsub (Subscriber.js:238)
at SafeSubscriber../node_modules/rxjs/Subscriber.js.SafeSubscriber.next (Subscriber.js:185)
at Subscriber../node_modules/rxjs/Subscriber.js.Subscriber._next (Subscriber.js:125)
at Subscriber../node_modules/rxjs/Subscriber.js.Subscriber.next (Subscriber.js:89)
at SwitchMapSubscriber../node_modules/rxjs/operators/switchMap.js.SwitchMapSubscriber.notifyNext (switchMap.js:126)
at InnerSubscriber../node_modules/rxjs/InnerSubscriber.js.InnerSubscriber._next (InnerSubscriber.js:23)
at InnerSubscriber../node_modules/rxjs/Subscriber.js.Subscriber.next (Subscriber.js:89)
at MergeMapSubscriber../node_modules/rxjs/operators/mergeMap.js.MergeMapSubscriber.notifyNext (mergeMap.js:145)
at InnerSubscriber../node_modules/rxjs/InnerSubscriber.js.InnerSubscriber._next (InnerSubscriber.js:23)
at InnerSubscriber../node_modules/rxjs/Subscriber.js.Subscriber.next (Subscriber.js:89)
at MergeMapSubscriber../node_modules/rxjs/operators/mergeMap.js.MergeMapSubscriber.notifyNext (mergeMap.js:145)
at InnerSubscriber../node_modules/rxjs/InnerSubscriber.js.InnerSubscriber._next (InnerSubscriber.js:23)
at InnerSubscriber../node_modules/rxjs/Subscriber.js.Subscriber.next (Subscriber.js:89)
at MapSubscriber../node_modules/rxjs/operators/map.js.MapSubscriber._next (map.js:85)
at MapSubscriber../node_modules/rxjs/Subscriber.js.Subscriber.next (Subscriber.js:89)
at Subject../node_modules/rxjs/Subject.js.Subject.next (Subject.js:55)
at S3Upload.onProgress (uploadSceneFile.js:27)
at S3Upload.<anonymous> (s3upload.js:139)