在$ http.post的catch / error中调用倒计时函数不会在vue js中执行

时间:2016-06-09 07:18:49

标签: javascript vue.js vue-resource

我有这个简单的代码,它在$ http.post的catch函数中调用倒数计时器。

this.$http.post('/api/task/post', updatedTask ,function(data){
              alert('success!')
}).catch(function(data){
              alert('Error!');
              vm.StartTimer(captionClass);
});

但是,当发生错误时,vm.StartTimer(captionClass)没有执行,那么尝试在click事件中调用相同的函数,它确实有效。

TestCounter: function(){
            vm.StartTimer('.tm-task-caption-title-1');
}, 

这是倒数计时器功能

StartTimer: function(display) {
            var counter = 5;
            var interval =setInterval(function() {
                $(display).html(counter);
                counter--;
                if(counter == 0){
                    clearInterval(interval);
                }

            }, 1000);
        },

1 个答案:

答案 0 :(得分:0)

对我有用的是vue-resource docs中使用的语法,在您的情况下,它应该是:

this.$http.post('/api/task/post', updatedTask ,function(data){
          alert('success!')
}, function(data){
          alert('Error!');
          vm.StartTimer(captionClass);
});

如你所见,没有捕获部分。 Vue资源使用promises的自定义实现,所以我不确定在Http方法中是否支持catch函数。无论如何,我使用了vue资源的promises,但是使用了resource method