Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.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 使用.map函数获取数据数组_Javascript_Reactjs_Asynchronous - Fatal编程技术网

Javascript 使用.map函数获取数据数组

Javascript 使用.map函数获取数据数组,javascript,reactjs,asynchronous,Javascript,Reactjs,Asynchronous,目前,我正在尝试将API数据从子组件移动到父组件。所以我想做一些映射,一次进行多次抓取,并将数据保存到一个数组中,但我对async JS非常陌生,我正在努力解决这个问题。我的函数现在看起来像这样: useffect(()=>{ (异步()=>{ const result=wait newArray.map((项目,索引)=> axios.get(`http://pokeapi.co/api/v2/pokemon/${index+1}`) ); setDataNew(结果); console.l

目前,我正在尝试将API数据从子组件移动到父组件。所以我想做一些映射,一次进行多次抓取,并将数据保存到一个数组中,但我对async JS非常陌生,我正在努力解决这个问题。我的函数现在看起来像这样:

useffect(()=>{
(异步()=>{
const result=wait newArray.map((项目,索引)=>
axios.get(`http://pokeapi.co/api/v2/pokemon/${index+1}`)
);
setDataNew(结果);
console.log(dataNew);
})();

}, []);首先,不需要嵌套的立即调用函数,只需吞下返回值即可

第二,你在等待一系列的承诺,但这些承诺并不是承诺。您应该将承诺数组包装在
Promise.all
调用中,以便等待数组中的每个承诺

useEffect(async () => {
      const result = await Promise.all(newArray.map((item, index) =>
        axios.get(`http://pokeapi.co/api/v2/pokemon/${index + 1}`)
      )); // result will be an array of values (not promises)
      setDataNew(result);
      console.log(dataNew);
  }, []);

首先,不需要嵌套的立即调用函数,只需吞下返回值即可

第二,你在等待一系列的承诺,但这些承诺并不是承诺。您应该将承诺数组包装在
Promise.all
调用中,以便等待数组中的每个承诺

useEffect(async () => {
      const result = await Promise.all(newArray.map((item, index) =>
        axios.get(`http://pokeapi.co/api/v2/pokemon/${index + 1}`)
      )); // result will be an array of values (not promises)
      setDataNew(result);
      console.log(dataNew);
  }, []);

嗯,我试过一些方法来让它成功,但没有成功。 当前我的代码如下所示:

const[dataNew,setDataNew]=useState([]);
useffect(()=>{
异步函数fetchData(){
const result=等待承诺。全部(
newArray.map((项目,索引)=>
axios.get(`http://pokeapi.co/api/v2/pokemon/${index+1}`)
)
);
setDataNew(结果);
控制台日志(结果);
}
fetchData();

}, []);好吧,我尝试了一些方法来实现这一点,但没有成功。 当前我的代码如下所示:

const[dataNew,setDataNew]=useState([]);
useffect(()=>{
异步函数fetchData(){
const result=等待承诺。全部(
newArray.map((项目,索引)=>
axios.get(`http://pokeapi.co/api/v2/pokemon/${index+1}`)
)
);
setDataNew(结果);
控制台日志(结果);
}
fetchData();

}, []);谢谢,但我现在似乎得到了一个空数组。
newArray
是空的吗?
setDataNew
是否实际设置了
dataNew
result
也是空的吗?newArray用0填充,因为我用它们初始化了它。好吧,结果中正确地填充了数据。dataNew仍然是空的,但我感觉控制台在欺骗我。我明天会再次使用它,谢谢。听起来像是
setDataNew
中的问题。如果你想得到反馈的话,你必须包含代码。谢谢,但是我现在似乎得到了一个空数组。是
newArray
空吗?
setDataNew
是否实际设置了
dataNew
result
也是空的吗?newArray用0填充,因为我用它们初始化了它。好吧,结果中正确地填充了数据。dataNew仍然是空的,但我感觉控制台在欺骗我。我明天会再次使用它,谢谢。听起来像是
setDataNew
中的问题。如果你想得到反馈,你必须包含代码。