【问题标题】:Async/Await Multiple Functions dependent on async data依赖异步数据的异步/等待多个函数
【发布时间】:2021-05-20 13:13:49
【问题描述】:

我正在创建一个 ReactJS 应用程序并尝试编写一个创建一组类别的函数。 此数据来自api

const data = [
 {
   name: '',
   category = 'sports'
 },
 {
   name: '',
   category = 'food'
 },
]

我写了一个获取数据的函数。

const getData = async()=>{
        const data = await fetch(url);
        // json conversion
        setData(data);
}

但是要过滤这个数据数组,我需要将数据传递给另一个过滤函数。我该怎么做才能使我的数据数组以填充值而不是初始空数组传递?

const filterData = ()=>{
        // data is global
        const categories = [new Set(data.map((item) => item.category))]
}

我的数据数组准备好后如何调用这个函数?或者如何得到想要的结果。

【问题讨论】:

  • 如果你想在每次data更改时更新categories,你可以做useEffect(() => ......., [data])
  • getData方法内的api获取数据后调用filterData

标签: javascript reactjs asynchronous async-await es6-promise


【解决方案1】:

简单,得到数据后调用过滤函数,

const getData = async()=>{
    const data = await fetch(url);
    // json conversion
    setData(data);

    // Call filter from here
    filterData (data)
}

这是最简单、最直接的方法。另一种方法肯定是监视数据更改(使用 useEffect 依赖项),但这对于简单的 IMO 任务来说可能有点过头了。

【讨论】:

  • 每次我在另一个函数中需要data 时,我是否必须从同一个函数中调用函数??
  • 不,因为 data 是一个全局对象,正如你所说,你只需要在源数据更新时更新全局变量(即,每当你调用 API 时)。我希望您已经将数据放在单独的服务文件中,然后跨组件共享,对吗?
猜你喜欢
  • 2017-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 2014-07-08
  • 1970-01-01
相关资源
最近更新 更多