了解Axios .then .catch

时间:2019-01-14 12:26:56

标签: events axios

我正在尝试从axios响应中了解工作流程,如果下一个解释在任何地方有误,我希望有人可以纠正我。

我有axios的示例代码,我想正确地理解此'.then'和'.catch'方法的功能。

return this.$axios.$get(`controllerName/methodController`)
    .then(response => {
        console.log("then1");
        console.log(response);
    }, ({response}) => {
        console.log("then2");
        console.log(response);
    })
    .catch(error => {
        console.log("catch");
        console.log(error)
    });
},

我做了一些测试,以创建不同的情况,并从后台应用程序发送不同的响应,在这种情况下,使用Laravel构建。例如:

然后的情况1:

  1. 如果我刚从控制器的第一行中添加了die(),它将获得200状态代码。
  2. 如果我返回此-> return response()->json('message');,则会得到200状态代码。

然后的情况2:

  1. 如果我没有在管理该请求的后端应用程序中声明路由,则可以看到'then2' log,响应中的状态代码为404状态代码。
  2. 如果控制器内部发生某些异常,我将发送相同的答案引发return response()->json('message');,但添加一个不同的状态代码,例如return response()->json('message', 404);,因此通过添加一个不同于默认状态的状态代码200一个进入then2区域。
  3. 如果我没有像以前一样通过捕获返回的response()来捕获此Exception,则会得到500状态代码。

案例捕获:

我无法从渔获案件中复制任何案件,但我想是这样的:

  1. 如果服务器在一段时间后不提供响应,它将到达那里?
  2. 如果在then情况下的javascript代码中出现错误,则会转到catch情况。

问题:

  1. 为什么会得到两个不同的“ then”?我必须像这样保持它的状态,以便能够从异常响应中识别出正常响应...但是不确定为什么会这样。很高兴了解这种行为。

  2. catch事件可以捕获哪些案件?我在我描述的事件中忘记了then事件中的任何情况,这些情况也可能很有趣?

0 个答案:

没有答案