如何在rxjs史诗中的catchError之后调度动作

时间:2019-02-15 13:16:07

标签: error-handling rxjs action

我正在使用rxjs,如果我的代码中发现错误,我想触发一个错误处理史诗。

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale">
<title>Graph</title>
</head>
  <body>
      <div id="app">
      <ul>
        <li v-for="item in items">
          {{item.root}} - 
          <button v-on:click="addingDataLevelOne(items)"> + </button>
          <button v-on:click="removeLevelOne(items)"> - </button> 
          <ul>
            <li v-for="child in item.childs">
              {{child.root}} - 
              <button> + </button>
              <button> - </button> 
              <ul>
                <li v-for="childLevel2 in child.childs">
                  {{childLevel2.root}} - 
                  <button> + </button>
                  <button> - </button> 
                </li>
              </ul>
            </li>
          </ul>
        </li>
      </ul>
    </div>
      <script src="https://cdn.jsdelivr.net/npm/vue"></script>
      <script src="main.js"></script>
  </body>
</html>

代码的console.log部分执行,但是我的errorHandler函数没有执行。如果将errorHandler添加到第一个管道,它将运行。我究竟做错了什么?谢谢!

1 个答案:

答案 0 :(得分:0)

我认为您错误地使用了内部pipe。您可以执行以下操作:

concatMap(() => from(getUser()).pipe(
    map(loginActions.loginSuccess),
    tap(() => console.log('Silent login success'))
)),
catchError((err: any) => {
    console.log(err);
    loginActions.errorHandler();
    return empty();
})