为什么不立即清除此setInterval函数

时间:2018-11-22 08:37:05

标签: javascript axios

请参见以下代码。预期的行为是在控制台中看到单个“ 100”,然后在清除间隔后仅此而已。但是实际上,每次清除之前,它每次记录2-3'100'。为什么不立即清除间隔?

var endpoint = "https://example.com";
axios
  .post()
  .then(function(response) {
    var timerId = setInterval(function() {
      axios
        .get(endpoint + response.data.url)
        .then(function(response) {
          console.log(response.data.percentageComplete);
          if (response.data.percentageComplete == 100) clearInterval(timerId);
        })
        .catch(function(error) {});
    }, 1000);
  })
  .catch(function(error) {});

1 个答案:

答案 0 :(得分:1)

因为一旦HTTP请求成功完成就将其清除,那么该请求可能需要几秒钟才能完成。同时,setInterval触发了另外一两个请求。