服务器发送错误状态时代码停止工作

时间:2018-04-22 10:20:16

标签: reactjs redux rxjs observable redux-observable

我是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()))
    );

请帮我解决这个问题以及此代码中出现的问题?

由于

1 个答案:

答案 0 :(得分:0)

您需要以不同的方式使用.catch运算符。例如,返回空的Observable(或其他操作),如:

.catch(error => {
  store.dispatch(hideLoadingSpinner());
  return Observable.empty();
})

请参阅catchError operator

上的官方文档