React Native - 同步调用restful API

Posted

技术标签:

【中文标题】React Native - 同步调用restful API【英文标题】:React Native - call restful API synchronously 【发布时间】:2017-06-15 04:00:34 【问题描述】:

我知道 React Native 使用 JS 做事方式,即异步调用函数。所以这也适用于 API“获取”功能。但是,出于某种原因,我需要使 API“获取”同步。

这就是我想做的。该应用程序有一个项目列表。它必须遍历项目,对于每个项目,我需要构造 URL,然后根据构造的 URL 调用“获取”以获取响应(例如,如果我有 5 个项目,它将调用 API 5 次,其中每个调用的 URL 都有不同的参数)。一旦成功接收到所有列表项的响应,我就需要做其他事情,例如更新某些状态(状态取决于是否返回所有响应)。

请注意,我无法控制后端,即无法更改 URL 端以进行批量调用。

问题是,如何在 React Native 中进行同步调用?

【问题讨论】:

你可能不需要同步调用api。如果您只是想在从所有 api 调用中获取数据后做某事,那么您可以使用 Promise.all() developer.mozilla.org/en/docs/Web/javascript/Reference/…。当所有的 Promise 都解决后,它就会解决,你会在它的 ".then()" 函数中得到一个结果数组 【参考方案1】:

您可以使用 XMLHttpRequest 对象同步调用。

var request = new XMLHttpRequest();

request.open('GET', 'https://mywebsite.com/endpoint.php', false); // third parameter  FALSE makes Synchronous HTTP request
request.send(null);

if (request.status === 200) 
  console.log(request.responseText);

您将获得许多提供同步 api 调用的 npm 模块。

希望对你有帮助。

【讨论】:

[未处理的承诺拒绝:错误:不支持同步 http 请求]

以上是关于React Native - 同步调用restful API的主要内容,如果未能解决你的问题,请参考以下文章

React Native 架构演进

React Native 同步安全随机数生成

npx react-native run-android:E/Device:同步期间出错:EOF

如何从 react native 调用 swift native 函数?

react-native: ios原生调用js方法

React Native教程 - 调用Web API