在 VueJS 上递归发送 HTTP 请求

Sending HTTP Request Recursively on VueJS

我检查了很多地方that.However,没有找到任何解决方案。假设我们在任何方法中都收到了 HTTP post 请求。我正在尝试递归调用 HTTP post 请求。问题是,当我尝试使用 setInterval 函数执行此操作时,由于连接问题,队列中有一些请求挂起。当连接较低时,它会累积在队列中。我想要做的是,在发送最新请求之前不要发送请求。它的最佳实践是什么?

您可以创建一个 returns Promise 的函数,以及另一个解析此 Promise 并在 .then 回调中再次调用自身的函数:

new Vue({
  el: '#app',
  data: {
    fetchCounter: 0 // used here to prevent infinite requests 
  },
  methods: {
    myFetch: function() {
      return fetch('https://jsonplaceholder.typicode.com/users/1/')
    },
    loopFetch: function() {
      this.myFetch().then(res => {
       console.log(res.status, ' ', this.fetchCounter++);
        if (this.fetchCounter < 10) { // repeat 10 times, then abort
          setTimeout(this.loopFetch, 1000); // sort of debounce
        } else {
          console.log('aborted')
        }
      })
    }
  },
  mounted() {
    this.loopFetch(); // first call of the loopFetch function 
  }
});
<script src="https://unpkg.com/vue/dist/vue.js"></script>

<div id="app"></div>