【问题标题】:How to get data inside a function with multiple request如何在具有多个请求的函数中获取数据
【发布时间】:2020-06-06 22:21:35
【问题描述】:

我无法在第三个请求中将 id_oneid_two 添加到我的正文中。第一个和第二个请求都成功了。下面是我的单个函数与多个 api 请求的演示。实际上,如果我console.log(one or two) 它将显示id_oneid_two 但是当我尝试在reqThreeApi 中使用它时,它给我一个undefined 错误id_oneid_two

const handleAction = async (props) => {
    reqOneApi(
            body,
            res => { setOne(res.data.id_one) },
            err => { err.response.data) }
        )
    reqTwoApi(
        body,
        res => { setTwo(res.data.id_two) },
        err => { err.response.data) }
    )
    reqThreeApi(
        { setOne_id: setOne, setTwo_id: setTwo },
        res => { console.log('get setOne and setTwo', res.data) },
        err => { err.response.data)} }
    )
};

【问题讨论】:

  • setOnesetTwo 是什么?反应useState setter?您可能需要将reqThreeApi 放入具有依赖关系[one, two]useEffect 钩子中,并且当设置了两个值时,触发第三个请求。另一种模式是等待前两个 API 调用的解析值(handleAction 已经是异步函数)以使这些值可用于进行第三个 API 调用。您能否更新您的问题以包含所有三个功能?

标签: reactjs react-native axios


【解决方案1】:

您正在使用异步函数,并且下线的调用取决于之前的调用,您绝对应该等待它们,它会解决这个问题。

const handleAction = async (props) => {
    await reqOneApi(
            body,
            res => { setOne(res.data.id_one) },
            err => { err.response.data) }
        )
    await reqTwoApi(
        body,
        res => { setTwo(res.data.id_two) },
        err => { err.response.data) }
    )
    await reqThreeApi(
        { setOne_id: setOne, setTwo_id: setTwo },
        res => { console.log('get setOne and setTwo', res.data) },
        err => { err.response.data)} }
    )
};

【讨论】:

    【解决方案2】:

    看起来在您的第三个 API 调用中,您只是传递了对设置函数的引用。您将需要调用您的 set 函数,而不仅仅是将它们作为引用传递或将它们的值存储在变量中,然后将该变量传递给您的第三个 api。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-22
      • 2011-06-04
      • 2019-10-11
      • 1970-01-01
      • 2015-02-05
      • 2021-04-09
      • 2022-01-22
      • 1970-01-01
      相关资源
      最近更新 更多