首页 > 解决方案 > 将 setInterval() 与 XMLHttpRequest 一起使用会导致 null 或 {}

问题描述

我对学习 JavaScript 还很陌生,所以我很可能在这里遗漏了一个明显的部分。我正在尝试定期运行 XMLHttpRequest(当被告知开始时)以将最新数据拉入我的数组中。当我在下面运行此代码时,我得到了一次 console.log,但下次它不会再次执行。

我可以在我的代码中调用两次“makeAPIGet(url)”,但是当我使用 setInterval() 时,它不会执行 teh seoncd 时间。关于我缺少什么或在这里做什么的任何建议?感谢!

编辑:我已经缩小了导致问题的范围;当函数第二次运行时,参数设置为未定义。除了提出全局论点之外,还有其他方法可以使论点保持不变吗?

const promise = require('promise');
const XMLHttpRequest = require('XMLHttpRequest').XMLHttpRequest;

function makeAPIGet(url) {
  return new promise(function(resolve,reject) {
    let xhr = new XMLHttpRequest;
    xhr.addEventListener("readystatechange", function () {
      if (this.readyState === this.DONE && this.status === 200) {
        let result = JSON.parse(xhr.responseText)
        console.log(result);
        resolve();
      };
    });

    xhr.open("GET",url);
    xhr.setRequestHeader("//");
    xhr.setRequestHeader("//");
    xhr.send();

  });
};

setInterval(makeAPIGet,1000),
makeAPIGet('//')

注意:我正在发送一个 url 并设置适当的标题,为了这篇文章的目的,它们被删除了

这将返回:
{我想要的结果}

然后什么都没有。代码没有结束,它只是坐在那里,直到我强制停止执行。

标签: javascriptxmlhttprequestes6-promisesetinterval

解决方案


推荐阅读