我有关Axios和功能的Vue.js代码无法正常工作

时间:2019-01-13 18:23:59

标签: vue.js

我想在axios之后执行 function2 。我没有捕获错误。但是仍然不执行Function2。

我想要但无法使用的代码:

   add: function () {
        axios.post('/add', this.person)
            .then(response => {
               if (response.data.etat) {
                    this.person = {};
                    this.function2();
                }
            })
            .catch(error => {
                console.log('errors: ', error)
            })},

这是可行的,但是我只想在axios通过的情况下执行function2。

add: function () {
        axios.post('/add', this.person)
            .then(response => {
               if (response.data.etat) {
                    this.person = {};

                }
            })
            .catch(error => {
                console.log('errors: ', error)
            })
             this.function2();
             },

有什么帮助吗?谢谢 !

2 个答案:

答案 0 :(得分:2)

您可以链接.then()块:

add: function () {
        axios.post('/add', this.person)
            .then(response => {
               if (response.data.etat) {
                    this.person = {};
                }
            })
            .then(() => {
               this.function2();
            })
            .catch(error => {
                console.log('errors: ', error)
            })
}
仅当axios.post成功并且第一个this.function2没有引发任何错误时,才会调用

.then()。在另一种情况下-您的.catch()将捕获该错误。

在这里您可以看到它如何实时运行: https://codepen.io/anon/pen/gZQyym?editors=1111

答案 1 :(得分:1)

由于您正在使用axios来发布数据,并且想要在操作成功完成后调用该方法,因此您应该检查响应状态,如:

   add: function () {
    axios.post('/add', this.person)
        .then(response => {
           if (response.status==200) {
                this.person = {};
                this.function2();
            }
        })
        .catch(error => {
            console.log('errors: ', error)
        })},