Javascript JS中的IIFE用于获取数据

Javascript JS中的IIFE用于获取数据,javascript,Javascript,我正在尝试编写一个函数,它将在数组中提取数据,然后将它们打印到condole中。对于正确的工作对于循环,我使用IIFE函数一致地检索所有数据,但代码不能正确工作。结果是空数组:[]。我想我的麻烦是因为我不正确的生活。如何修复此错误 var url = [ 'http://www.json-generator.com/api/json/get/cevhxOsZnS', 'http://www.json-generator.com/api/json/get/cguaPsRxAi', 'h

我正在尝试编写一个函数,它将在数组中提取数据,然后将它们打印到condole中。对于正确的工作
对于
循环,我使用IIFE函数一致地检索所有数据,但代码不能正确工作。结果是空数组:
[]
。我想我的麻烦是因为我不正确的生活。如何修复此错误

var url = [
  'http://www.json-generator.com/api/json/get/cevhxOsZnS',
  'http://www.json-generator.com/api/json/get/cguaPsRxAi',
  'http://www.json-generator.com/api/json/get/cfDZdmxnDm',
  'http://www.json-generator.com/api/json/get/cfDZdmxnDm',
  'http://www.json-generator.com/api/json/get/cfDZdmxnDm'
]

function fetchData(arg) {
  var urls = Array.isArray(arg) ? arg : [...arguments]
  var arr = [];
  for (var i = 0; urls.length < i; i++) {
    (function (i) {
      fetch(urls[i])
        .then(res => res.json())
        .then(res => arr.push(res))
    })(i)
  }
  return arr;
}

console.log(fetchData(...url))   // printed empty array: []
var url=[
'http://www.json-generator.com/api/json/get/cevhxOsZnS',
'http://www.json-generator.com/api/json/get/cguaPsRxAi',
'http://www.json-generator.com/api/json/get/cfDZdmxnDm',
'http://www.json-generator.com/api/json/get/cfDZdmxnDm',
'http://www.json-generator.com/api/json/get/cfDZdmxnDm'
]
函数fetchData(arg){
var url=Array.isArray(arg)?arg:[…参数]
var-arr=[];
对于(var i=0;url.lengthres.json())
.然后(res=>arr.push(res))
})(一)
}
返回arr;
}
log(fetchData(…url))//打印的空数组:[]

问题在于提取是异步的,因此您在任何提取完成之前返回数组。可能会有帮助。谢谢你的回答。没错,fetch是异步的,为了修复这个特性,我使用了IIFE函数。现在我不明白为什么它不能正常工作。你的生活很好。不起作用的是,在获取结果之前,您正在执行
console.log
(请记住,获取是异步的,在获取数据时,您的代码一直在运行)下面是我的操作方法:您的循环条件
url.length
似乎是向后的。