如何在 RN 中连续运行函数



我正在尝试使用 React Native 创建一个声音计量应用程序,但似乎如果我开始测光,我有一个无限循环,直到用户停止它,它会挂起应用程序。

基本上,用户点击一个按钮,调用startMonitor(),然后runMonitor启动,checkSound()检查当前的分贝水平。

此处的相关代码部分

startMonitor() {
    KeepAwake.activate();
    this.setState({ monitorStatus: true
    }, this.runMonitor );
  }
  runMonitor() {
    while(this.state.monitorStatus) {
      if(this.state.beginWait) {
       this.wait(5000);
     }
     if(!this.state.isTransmitting) {
        this.checkSound();
    } 
   }
  }

关于如何连续/无限运行函数直到用户取消它的任何想法?

您可以使用

setInterval

startMonitor() {
     this.runMonitorIV = setInterval(runMonitor, 1000);
  }
  runMonitor() {
    while(this.state.monitorStatus) {
      if(this.state.beginWait) {
       this.wait(5000);
     }
     if(!this.state.isTransmitting) {
        this.checkSound();
    } 
   }
}

//called on user event
stopMonitor() {
  clearInterval(this.runMonitorIV);
}

(不确定您的上下文或范围,但这是基本思想)

还有TimerMixin,它可以在组件卸载时清除这些计时器触发器。

相关内容

  • 没有找到相关文章

最新更新