如何使用“API”中的值填充数组;取回;在javascript函数中

如何使用“API”中的值填充数组;取回;在javascript函数中,javascript,reactjs,fetch,Javascript,Reactjs,Fetch,我正在尝试编写一个函数来构建一个数组,其中数组的每个值都是使用唯一url从API中提取的值,一旦从API中提取该值,它就会被推送到现有数组中 基本上,当调用该函数时,我希望为列表中列出的每个股票代码填充一个数组,其中包含获取的API数据,但到目前为止,我所拥有的似乎不起作用 List: [ { tick: "AAPL", datePurch: "01/01/2021"}, { tick: &q

我正在尝试编写一个函数来构建一个数组,其中数组的每个值都是使用唯一url从API中提取的值,一旦从API中提取该值,它就会被推送到现有数组中

基本上,当调用该函数时,我希望为列表中列出的每个股票代码填充一个数组,其中包含获取的API数据,但到目前为止,我所拥有的似乎不起作用

List: [
                { tick: "AAPL", datePurch: "01/01/2021"},
                { tick: "GOOG", datePurch: "01/01/2021"},
                { tick: "TSLA", datePurch: "01/01/2021"},
                { tick: "J", datePurch: "01/01/2021"},
                { tick: "AMZN", datePurch: "01/01/2021"},
                { tick: "FB", datePurch: "01/01/2021"},
                { tick: "BABA", datePurch: "01/01/2021"},
                { tick: "JNJ", datePurch: "01/01/2021"},
                { tick: "JPM", datePurch: "01/01/2021"},
                { tick: "XOM", datePurch: "01/01/2021"},
                ],

 totalPortfolio(){
        const arr = List.map((i) => (
            fetch(`${IEX.base_url}/stock/${i.tick}/intraday-prices?chartLast=1&token=${IEX.api_token}`)
                .then(response => response.json())
                .then(arr => arr.push(arr))
            ));
        console.log(arr);
    }
  

您需要等待所有的抓取完成,然后再进行日志记录

将代码重新编写为异步/等待函数,并添加所需的
Promise.all()


谢谢你的回复。当在map函数中调用它时,我得到“'getIntradayPrice'未定义”。你知道为什么吗?我已经在我的react应用程序中为函数添加了绑定,但我仍然会遇到相同的错误如果你遇到错误,这意味着,嗯,就是这样。该函数未在您试图使用它的作用域中定义。您知道如何在第二个函数中的函数调用的作用域中获取“getIntradayPrice”函数吗?嵌套函数?我尝试了一些不同的选项,但它没有像上面写的那样工作,因为它正好在上面,应该可以正常工作(如果你有
IEX.base\u url
等等)。看起来问题是我应该作为类的一部分访问这些方法(即这个.getIntradayPrice)。你的解决方案现在起作用了!谢谢
const List = [
  { tick: "AAPL", datePurch: "01/01/2021" },
  { tick: "GOOG", datePurch: "01/01/2021" },
  { tick: "TSLA", datePurch: "01/01/2021" },
  { tick: "J", datePurch: "01/01/2021" },
  { tick: "AMZN", datePurch: "01/01/2021" },
  { tick: "FB", datePurch: "01/01/2021" },
  { tick: "BABA", datePurch: "01/01/2021" },
  { tick: "JNJ", datePurch: "01/01/2021" },
  { tick: "JPM", datePurch: "01/01/2021" },
  { tick: "XOM", datePurch: "01/01/2021" },
];

async function getIntradayPrice(tick) {
  const resp = await fetch(`${IEX.base_url}/stock/${tick}/intraday-prices?chartLast=1&token=${IEX.api_token}`);
  return resp.json();
}

async function totalPortfolio() {
  const respPromises = List.map(({ tick }) => getIntradayPrice(tick));
  const respArrays = await Promise.all(respPromises);
  console.log(respArrays);
}