当前位置: 首页 > 知识库问答 >
问题:

如何从Vuex操作中的axios函数返回错误消息以分派捕获(错误)?

林意蕴
2023-03-14

我有一个使用axios进行ajax调用的操作,每当axios返回错误时,它就会被axios catch函数捕获,因此我想知道是否有可能将相同的错误抛出到dispatch catch函数。

我尝试//抛出新错误(“内部测试错误”);从axios内部捕获(错误),但dispatch似乎无法捕获错误

vuex存储上的操作代码

actions:{
    assignOrder(context, assign){
        axios.post('/assignOrder',assign)
                  .then((response) => {
                    console.log(response)
                  })
                  .catch((error) => {
                     //I want to throw error catched from here
                        console.log(error.response.data.errors)
                      //throw new Error("test error inside");
                    // }       
                  })
    }
}

关于我在vue组件上的方法

methods:{
      setAssign(){
        this.assign.order_id = this.order.id
        if(this.validate()){
          this.errors = {};
          this.$store.dispatch('assignOrder', this.assign).then(() => {
            showNotify('success','Order has been assigned')
            this.$store.dispatch('getOrders',this.active)
          })
          .catch((error) => {
             //catch the error here
              alert(error)    
            })
        }
        else{
          this.showErr = true;
        }
      },
}

我希望axios抛出catch error,该错误将通过调度进行捕获

共有2个答案

濮阳君浩
2023-03-14

您可以只返回Promise in action并在方法中处理响应/错误

vuex商店:

actions:{
    assignOrder(context, assign){
        return axios.post('/assignOrder',assign)            
    }
}

在组件中执行以下操作:

methods:{
    setAssign() {
        this.assign.order_id = this.order.id
        if (this.validate()) {
            this.errors = {};
            this.$store.dispatch('assignOrder', this.assign).then(() => {
                showNotify('success','Order has been assigned')
                this.$store.dispatch('getOrders', this.active)
            }).catch((error) => {
                //catch the error here
                alert(error)    
            })
        } else{
            this.showErr = true;
        }
    },
}
楚俊杰
2023-03-14

只需从你的操作中返回一个promise,然后在你的组件上处理它:

actions: {
  assignOrder(context, assign) {
    return new Promise((resolve, reject) => {
      axios.post('/assignOrder', assign)
        .then((response) => {
          resolve(response)
        })
        .catch((error) => {
          reject(error.response.data.errors)
        })
    })
  }
}

在您的组件上:

methods: {
  setAssign() {
    this.assign.order_id = this.order.id
    if (this.validate()) {
      this.errors = {};
      this.$store.dispatch('assignOrder', this.assign).then((res) => {
          showNotify('success', 'Order has been assigned')
          console.log(res)
          this.$store.dispatch('getOrders', this.active)
        })
        .catch((error) => {
          // catch the error 
          alert(error)
        })
    } else {
      this.showErr = true;
    }
  },
}

promise将返回一个解决或一个拒绝,它将绑定到您的然后捕获

 类似资料:
  • 我正在努力使用Alamofire及其浏览器获取返回的json错误消息<代码>成功/。故障方法。 在使用这个之前,我可以使用

  • 我有一个运行在后端的Node/Express服务器和一个react前端,我正在尝试制作最简单的API——但无论我做什么,我似乎都在post请求中遇到了404错误。我已尝试将代理添加到包中。json,删除代理并在地址i中包含端口。。Ehttp://localhost:5000/createaccount,包括http://localhost:5000只需在post请求中使用“/createaccou

  • 考虑下面的代码: 我想做的是用我应该从JSON响应中获得的错误消息捕获错误。我希望在我的第二个console.log中得到一个响应,但是不知何故,响应在第一个console.log.我如何在第一个实例中得到我想要的响应? 此外,为什么响应在第一个实例中给我“ok”,即使应用编程接口密钥不存在? 为什么我必须返回rsp.json()才能在第二个实例中获得正确的JSON,而响应应该已经是JSON格式的

  • 我无法用axios捕捉错误响应。怎么做?我用的是: 我看到ajax请求的结果有400个状态代码,响应主体看起来像(Django后端)。没关系,我已经准备好在catch处理程序中处理这些错误了。 但是它们转到成功处理程序。为何如此?我在控制台中看到以下输出: 成功处理程序接收axios错误对象作为结果。为什么会这样,下一步该怎么办?此错误对象不包含任何有用信息。 UPD。实际上,错误对象包含有用的信

  • 问题内容: 当我将鼠标悬停在任何单词上时,总是显示一个黑框。如果PHP代码返回文本,它将显示在黑框中(应该显示)。但是,如果文本未返回,我希望它返回一个错误函数,以便以后可以更改黑盒的CSS,以使其宽度为而不是。 您可能已经发现,我遗漏了一些不重要的代码。希望有人能理解和帮助我!谢谢! 问题答案: 这正是您可以执行的操作: 在您的PHP文件中: 在您的jQuery AJAX端:

  • 我必须做一个程序,找到最大的偶数3给定的数字。然而,我似乎无法让它工作,因为我一直收到这个错误消息。我到底做错了什么? 对于初学者的问题,我很抱歉,但我以前从未见过这个错误消息,也不知道它意味着什么,也不知道如何修复它。 提前谢谢你。