使用vue资源截取承诺错误

问题描述 投票:0回答:1

我想使用以下代码在我的main.js中使用代码!= 200截取所有api响应,并执行以下代码,然后执行操作,然后显示显示错误消息的祝酒词。我正在使用vue-resource并且拦截器如下:

Vue.http.interceptors.push(function(request, next) {
  next(function(response) {
    debugger;

    if (response.status != 200) {
      store.dispatch("errorAction", response);
    }
  });
});

但是回调内部的代码从未到达...

然后我的api调用就这样完成。 Java控制器只是抛出带有500错误代码的异常。

 Vue.http
    .get(`http://${ADDRESS}/${store.state.module}/foo/exception`)
    .then(() => {}, () => {});

我是Promises的新手,可能我在弄乱事情,但我不想将错误回调传递给每个诺言。如果我的要求如下:

export function getFoo(cb) {
  Vue.http
    .get(`http://${ADDRESS}/${store.state.module}/foo`)
    .then(
      response => {
        return response.json();
      },
      () => {}
    )
    .then(foos => {
      cb(foos);
    });
}

我想摆脱()=> {},并使用拦截器代码来运行。

vue.js ecmascript-6 es6-promise vue-resource
1个回答
0
投票

我认为我遇到了同样的问题,因此我尝试查看文档。好吧,这很简单,您只需要执行以下操作即可:

在main.js中

Vue.http.interceptors.push(function(req) {

//Here you can add some headers, if needed
req.headers.set('awesomeHeader', 'owwnt')

return function(res) {

    if( res.status == 200 || res.status == 201 || res.status == 202 ){ //Here you add the status codes that you'll work with, just like my example
        //Sucess response
    } else {
        //Every time witch an request return a status differ form the list above, you can do whatever you want, for example you can redirect the page for a new one
        window.location.href = `http://localhost:8080/#` 
        //If you want to display a notification, you need to import the component before, and then do something like it:
        Notification.success({
             title: 'error',
             message: 'Unauthorized request!',
             offset: 100
         })
    }

};
})

它回答您的问题吗?希望如此。

© www.soinside.com 2019 - 2024. All rights reserved.