我是rxjs Observables的新手。我正在尝试简单的登录页面应用程序当我发送正确的凭据时,代码工作正常,加载微调器也停止渲染。凭据无效后,代码停止工作,微调器也停留在页面上。我必须重新加载页面才能使其再次运行。 这是代码:
import constants from "../constants";
import "rxjs";
import { ajax } from "rxjs/observable/dom/ajax";
import { loginBody } from "../utils/bodyCreator";
import {
showLoadingSpinner,
hideLoadingSpinner
} from "../actions/LoadingOverlayActions";
const sessionCreated = payload => ({
type: constants.sessionCreated,
response: payload
});
export const tryLoginEpic = (action$, store) =>
action$
.ofType(constants.tryLogin)
.map(() => store.dispatch(showLoadingSpinner()))
.mergeMap(action =>
ajax
.post(constants.loginEndPoint, loginBody(store.getState()), {
"Content-Type": "application/json"
})
.map(data => store.dispatch(sessionCreated(data.response)))
.map(() => store.dispatch(hideLoadingSpinner()))
.catch(err => store.dispatch(hideLoadingSpinner()))
);
请帮我解决这个问题以及此代码中出现的问题?
由于
答案 0 :(得分:0)
您需要以不同的方式使用.catch
运算符。例如,返回空的Observable(或其他操作),如:
.catch(error => {
store.dispatch(hideLoadingSpinner());
return Observable.empty();
})
上的官方文档