Vue条件轮询

时间:2019-03-06 07:54:49

标签: javascript vue.js vuejs2

var page = new Vue({
    el: '#content-page',
    data: {
        token: null
    },

    methods: {},
    mounted: function () {
        //get token object from API
    }
});

令牌具有属性syncStatus,可以是inProgresscompleted。我想要一个条件轮询,该轮询将一直调用API,直到syncStatus获取值完成为止。

我可以做这样的事情:

var page = new Vue({
    el: '#content-page',
    data: {
        token: null
    },

    methods: {
        //Method-get-token
        //In axios.then if syncStatus is inProgress call this method again
    },
    mounted: function () {
        //get token object from API
        //if syncStatus is inProgress call method-get-token
    }
});

但是我认为必须有一些更好的方法来做到这一点。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

假设您没有商店

您可以添加一个数据属性以保存syncStatus的值,然后在已挂载的函数中有条件地调用api以继续检查该值是否更改。 然后添加观察者以在syncStatus的值更改时做魔术

与此类似的事物

data() {
  return {
    syncStatus: 'notStarted' //you should think of having a default value to this
  }
},
mounted() {
  window.setInterval(()=>{
    //call the api conditionally
    if (syncStatus === 'inProgress'){
      //call the api
    }
  },MilliSeconds)
},
watch: {
  syncStatus: function(newValue) {
    //do magic when the value changes
  }
}