当应用程序处于后台时,在反应本机后台计时器 setInterval 中调用 await

Posted

技术标签:

【中文标题】当应用程序处于后台时,在反应本机后台计时器 setInterval 中调用 await【英文标题】:calling await inside react native background timer setInterval when app is in background 【发布时间】:2020-06-20 03:56:26 【问题描述】:

我在 react native 后台计时器 setInterval 中有一个 api 调用,它会导致代码执行暂停。如果我只是在回调中做简单的事情,即使应用程序在后台,它也可以正常工作,但是如果我在回调函数中使用 await 关键字,它会暂停执行。当应用程序成为前台时,所有任务都会立即执行

  const runTimer = () => 
    BackgroundTimer.start();
    timerInterval = BackgroundTimer.setInterval(async () => 
      await callAnApi();
    , 20000);
  ;

  const stopTimer = () => 
    BackgroundTimer.clearInterval(timerInterval);
    BackgroundTimer.stop();
  ;

【问题讨论】:

【参考方案1】:

您可以使用react-native-background-timer

即使应用在后台也能正常工作。

你可以找到here更多关于实现的细节

【讨论】:

在后台定时器中使用 await 导致暂停 我想在最后一个完成之前不运行新的 api 调用。所以我需要一些异步 setInterval

以上是关于当应用程序处于后台时,在反应本机后台计时器 setInterval 中调用 await的主要内容,如果未能解决你的问题,请参考以下文章

当应用程序处于后台状态(Android)时,远程推送通知提示无法在本机反应中工作

当应用程序在后台或在本机反应中被杀死时,是不是可以检查用户的移动活动?

当应用程序处于后台并且网络连接丢失时,位置更新计时器不起作用?

APP长时间处于后台,再次调用时提示用户重新登录

当应用程序处于后台时接收 Apple 推送通知

应用程序处于后台且静音模式开启时需要播放声音