Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将json对象传递到另一个函数以在for循环中调用_Javascript_Json_Async Await_Xmlhttprequest_Jsonparser - Fatal编程技术网

Javascript 将json对象传递到另一个函数以在for循环中调用

Javascript 将json对象传递到另一个函数以在for循环中调用,javascript,json,async-await,xmlhttprequest,jsonparser,Javascript,Json,Async Await,Xmlhttprequest,Jsonparser,我有一个通过XmlHTTPRequest获取json对象列表的函数: function getDataByXHR(method, url) { let xhr = new XMLHttpRequest(); xhr.open(method, url, true); xhr.onload = function () { console.log(xhr.response); gameSettings = JSON.parse(xhr.response); cons

我有一个通过XmlHTTPRequest获取json对象列表的函数:

function getDataByXHR(method, url) {
  let xhr = new XMLHttpRequest();
  xhr.open(method, url, true);
  xhr.onload = function () {
    console.log(xhr.response);
    gameSettings = JSON.parse(xhr.response);
    console.log(gameSettings);
    this.data = gameSettings;
  };
  xhr.onerror = function () {
    console.error("An error occur getting the XMLHttpRequest");
  };
  xhr.send();
}
如何将它们传递到这样的函数中

function waitConsoleLog() {
  const sleep = (ms) => {
    return new Promise((resolve) => setTimeout(resolve, ms));
  };
  let count = 0;
  console.log(this.data);
  for (let index = 0; index < this.data.length; index++) {
    async (element) => {
      count++;
      await sleep(500 * count);
      console.log(element);
    };
  }
}
函数waitConsoleLog(){
常数睡眠=(毫秒)=>{
返回新承诺((resolve)=>setTimeout(resolve,ms));
};
让计数=0;
console.log(this.data);
for(让index=0;index{
计数++;
等待睡眠(500*计数);
控制台日志(元素);
};
}
}
要在for循环中使用,因为数据/游戏设置总是以未定义的形式返回,请尝试使用:

function getDataByXHR(method, url) {
  let xhr = new XMLHttpRequest();
  xhr.open(method, url, true);
  xhr.onload = function () {
    console.log(xhr.response);
    gameSettings = JSON.parse(xhr.response);
    console.log(gameSettings);
    this.data = gameSettings;
    waitConsoleLog(this.data)
  };
  xhr.onerror = function () {
    console.error("An error occur getting the XMLHttpRequest");
  };
  xhr.send();
}

function waitConsoleLog(data) {
  const sleep = (ms) => {
    return new Promise((resolve) => setTimeout(resolve, ms));
  };
  let count = 0;
  console.log(data);
  for (let index = 0; index < data.length; index++) {
    async (element) => {
      count++;
      await sleep(500 * count);
      console.log(element);
    };
  }
}
函数getDataByXHR(方法,url){ 设xhr=newXMLHttpRequest(); open(方法、url、true); xhr.onload=函数(){ console.log(xhr.response); gameSettings=JSON.parse(xhr.response); console.log(游戏设置); this.data=游戏设置; waitConsoleLog(this.data) }; xhr.onerror=函数(){ error(“获取XMLHttpRequest时发生错误”); }; xhr.send(); } 函数waitConsoleLog(数据){ 常数睡眠=(毫秒)=>{ 返回新承诺((resolve)=>setTimeout(resolve,ms)); }; 让计数=0; 控制台日志(数据); for(让index=0;index{ 计数++; 等待睡眠(500*计数); 控制台日志(元素); }; } }
尝试将JSON分配给全局变量。