Javascript JS中的IIFE用于获取数据
我正在尝试编写一个函数,它将在数组中提取数据,然后将它们打印到condole中。对于正确的工作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
对于
循环,我使用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
似乎是向后的。