json 将获取数据存储在变量中,以便以后访问

niwlg2el  于 2022-12-30  发布在  其他
关注(0)|答案(2)|浏览(130)

我正面临一个可能超级容易解决的关于获取的问题。我想获取一些json数据并将其存储在一个变量中以便以后访问。问题是我总是在我的变量中得到未定义的结果。如何处理这种数据存储?
这是我的密码。

const fetchCities = () => {
      fetch('cities.json')
      .then(response => response.json())
      .then(data => {
        return data;
        });
      }
    let cities = fetchCities();
    console.log(cities)

已经查找了答案,但找不到一个方法来做。谢谢!

webghufk

webghufk1#

您可以非常简单地使用async/await执行此操作,如下所示:

const fetchCities = async () => {
  let cities = await fetch('cities.json');
  return cities.json();
};

let cities = await fetchCities();
console.log(cities);
x8diyxa7

x8diyxa72#

发送一个获取请求需要时间,所以console.log在数据到达之前就可以工作了。处理获取的最好方法是使用异步函数,并像这样等待:

const fetchCities = ()=>{
    return fetch('cities.json');
}

async function main(){
    try {
        const res = await fetchCities();
        const data = await res.json();
        // handle the data here, this will work only after the data arrival
        console.log(data);
    } catch (err) {
        console.log(err);
    }
}
main();

注意:await只能用在异步函数中,这是main函数的主要用途。

或者,如果要使用.then

const fetchCities = ()=>{
    return fetch('cities.json');
}
function main(){
    fetchCities()
    .then(res => res.json())
    .then(data => {
        // handle the data here, all you code should be here
    })
    .catch (err => console.log(err));
}
main();

相关问题