在序列中调用 React js Fetch 调用

Posted

技术标签:

【中文标题】在序列中调用 React js Fetch 调用【英文标题】:Calling React js Fetch Calls In a Sequence 【发布时间】:2020-11-28 12:52:35 【问题描述】:

有人,请帮我一个接一个地调用这些 fetch Api,因为我正在使用存储在后端的数据来处理我的下一个请求。我希望以这种方式依次调用它们一个完整然后下一个请求。

 Promise.all([
   fetch(`http://localhost:5000/zoomapi`, 
    requestOptions),

    fetch('http://localhost:5000/getId')
    .then((res) => res.json())
    .then((result) => 
        this.setState( zoomid: result );      
    ),

   fetch(`http://localhost:5000/users/zoom?name=$this.state.zoomid`)
   .then((res) => res.json())
   .then((result) => 
       this.setState( zoomdata: result );
      )  
  ])
   .catch((error) => 
       this.setState( error );
   );


  )

【问题讨论】:

【参考方案1】:

.setState不是同步操作,所以不能用const id = this.state.zoomid,可以用result代替。此外,你的承诺应该是链式的,而不是嵌套的。示例:

fetch('http://localhost:5000/getId')
    .then((res) => res.json())
    .then((result) => 
        this.setState( zoomid: result );
        return fetch(`http://localhost:5000/users/zoom?name=$result`);
    )
    .then((res) => res.json())
    .then((result) => 
        this.setState( zoomdata: result );
    )
    .catch((error) => 
        this.setState( error );
    );

【讨论】:

对不起,如果我不清楚我的问题。但是我在上述两次提取之前调用了一次提取,其中我更新了节点后端中的变量,当我使用“/getId”时,我想要更新的变量 id,我仍然得到旧的临时变量。所以请帮忙。感谢您的承诺建议,我已经进行了更改而不是嵌套。

以上是关于在序列中调用 React js Fetch 调用的主要内容,如果未能解决你的问题,请参考以下文章

react-native——fetch

如何在带有 Jest 的 react-native 中使用模拟的 fetch() 对 API 调用进行单元测试

React Js API 调用 Jest 测试用例?

Fetch API 无法加载“.php”本地文件 - React JS + PHP

Android上的React Native,带有fetch的ajax调用失败

fetch 在测试环境中从不调用 .then 或 .catch