首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理本机反应中的大量API响应?

如何处理本机反应中的大量API响应?
EN

Stack Overflow用户
提问于 2019-03-20 04:49:28
回答 2查看 1.2K关注 0票数 2

发行说明::

我在研究反应本机应用程序。我的服务器中有太多的API数据。如果我第一次在页面上点击这个API,那么它就正常工作了。但是,当第二次在同一页面上点击API时,应用程序就会关闭。在火基上没有此错误/崩溃日志。

我使用axios来点击服务器上的API。

代码::

代码语言:javascript
复制
componentDidMount() {
    this.getSingleUser();
}

 async getSingleUser() {
   NetInfo.isConnected.fetch().then(isConnected => {
       axios.get(`${api_URL}`)
           .then(response => {
               Toast.show("2");
               this.checkApiResponse(response.data.response);
       })
       .catch(error => {
           Toast.show(JSON.stringify(error));
       });
   });
}


checkApiResponse(response) {
   this.setState({ loading: false, refreshing: false });
   console.log(response);
}

错误日志::

代码语言:javascript
复制
--------- beginning of system
2019-03-20 15:06:37.846 555-555/? E/lowmemorykiller: Error writing /proc/23858/oom_score_adj; errno=22
2019-03-20 15:06:37.846 555-555/? E/lowmemorykiller: Error writing /proc/23825/oom_score_adj; errno=22
2019-03-20 15:06:37.847 555-555/? E/lowmemorykiller: Error writing /proc/22442/oom_score_adj; errno=22
2019-03-20 15:06:37.856 555-555/? E/lowmemorykiller: Error writing /proc/23825/oom_score_adj; errno=22
2019-03-20 15:06:37.885 555-555/? E/lowmemorykiller: Error writing /proc/22442/oom_score_adj; errno=22
2019-03-20 15:06:37.924 555-555/? E/lowmemorykiller: Error writing /proc/23825/oom_score_adj; errno=22
2019-03-20 15:06:37.924 555-555/? E/lowmemorykiller: Error writing /proc/22442/oom_score_adj; errno=22
2019-03-20 15:06:37.973 555-555/? E/lowmemorykiller: Error writing /proc/23825/oom_score_adj; errno=22
2019-03-20 15:06:37.987 555-555/? E/lowmemorykiller: Error opening /proc/22442/oom_score_adj; errno=2
2019-03-20 15:06:37.989 555-555/? E/lowmemorykiller: Error writing /proc/23107/oom_score_adj; errno=22
2019-03-20 15:06:37.989 555-555/? E/lowmemorykiller: Error writing /proc/22296/oom_score_adj; errno=22
2019-03-20 15:06:37.989 555-555/? E/lowmemorykiller: Error writing /proc/24137/oom_score_adj; errno=22
2019-03-20 15:06:37.990 555-555/? E/lowmemorykiller: Error writing /proc/23642/oom_score_adj; errno=22
2019-03-20 15:06:37.990 555-555/? E/lowmemorykiller: Error opening /proc/23825/oom_score_adj; errno=2
2019-03-20 15:06:38.009 555-555/? E/lowmemorykiller: Error writing /proc/23107/oom_score_adj; errno=22
2019-03-20 15:06:38.009 555-555/? E/lowmemorykiller: Error writing /proc/22296/oom_score_adj; errno=22
2019-03-20 15:06:38.010 555-555/? E/lowmemorykiller: Error writing /proc/23642/oom_score_adj; errno=22
2019-03-20 15:06:38.020 555-555/? E/lowmemorykiller: Error writing /proc/23107/oom_score_adj; errno=22
2019-03-20 15:06:38.020 555-555/? E/lowmemorykiller: Error writing /proc/23579/oom_score_adj; errno=22
2019-03-20 15:06:38.021 555-555/? E/lowmemorykiller: Error writing /proc/24137/oom_score_adj; errno=22
2019-03-20 15:06:38.021 555-555/? E/lowmemorykiller: Error writing /proc/23642/oom_score_adj; errno=22
2019-03-20 15:06:38.045 555-555/? E/lowmemorykiller: Error opening /proc/23579/oom_score_adj; errno=2
2019-03-20 15:06:38.723 555-555/? E/lowmemorykiller: Error writing /proc/23148/oom_score_adj; errno=22
2019-03-20 15:06:38.726 555-555/? E/lowmemorykiller: Error writing /proc/19742/oom_score_adj; errno=22
2019-03-20 15:06:38.731 555-555/? E/lowmemorykiller: Error writing /proc/23148/oom_score_adj; errno=22
2019-03-20 15:06:38.760 1588-1800/? E/ConnectivityService: RemoteException caught trying to send a callback msg for NetworkRequest [ id=632, legacyType=-1, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED] ]
2019-03-20 15:06:38.765 555-555/? E/lowmemorykiller: Error writing /proc/22716/oom_score_adj; errno=22
2019-03-20 15:06:38.786 743-743/? E/cnss-daemon: Stale or unreachable neighbors, ndm state: 4
2019-03-20 15:06:38.817 1588-1800/? E/ConnectivityService: RemoteException caught trying to send a callback msg for NetworkRequest [ id=627, legacyType=-1, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED] ]
2019-03-20 15:06:38.850 1588-1779/? E/InputDispatcher: channel '347cfde com.miui.home/com.miui.home.launcher.Launcher (server)' ~ Channel is unrecoverably broken and will be disposed!
2019-03-20 15:06:39.579 24915-24915/? E/miuisdk: got ModuleLoadException when load modules: no such module found: com.miui.personalassistant
2019-03-20 15:06:39.820 743-743/? E/cnss-daemon: Stale or unreachable neighbors, ndm state: 4
2019-03-20 15:06:40.366 24931-23888/? A/google-breakpad: Microdump skipped (uninteresting)

有些时候,如果API数据太小,它就能正常工作。当API数据太大时,这是一个问题。如果有人有解决办法,请给我建议?

EN

回答 2

Stack Overflow用户

发布于 2019-03-27 17:52:38

正如@Maneesh所说,这可能是由于函数被多次调用而不等待响应造成的。您已经提到您已经为Axios添加了一个超时,但是有一个已知问题简单地将超时添加到Axios不起作用。(我以前也有过这个问题)

对请求设置超时有一个解决办法--使用cancelToken和普通的javascript setTimeout()手动中止请求

代码语言:javascript
复制
function setRequestTimeout(source, timeout) {
  setTimeout(() => {
    source.cancel('timeout')
  }, timeout);
}

function getRequest() {
  return new Promise((resolve, reject) => {

    const timeout = 10000

    let source = axios.CancelToken.source()
    setRequestTimeout(source, timeout)

    try {
      const response = await axios.get('/your-address/', {
        timeout: timeout,
        headers: {
          'Content-type': 'application/json'
        },
        cancelToken: source.token
      })
      resolve(response)

    } catch (error) {
      reject(error)
    }
  })
}

这在过去对我起了作用,我的解决方案是从我前面提到的问题中找到的,希望这对你有帮助!

票数 1
EN

Stack Overflow用户

发布于 2019-03-23 07:12:49

我认为这是因为在从api获得响应之前,它正在调用函数,因为正如您提到的,对于较大的大小,它是不工作的,而且我无法在代码中看到await。尝试将await添加到axios中并进行检查。希望这能帮到你。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55253769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档