Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

123
Vistas
especifique un período de tiempo para realizar solicitudes de API y permita que el usuario detenga y reinicie estas solicitudes en React Native

Estoy aprendiendo React Native y estoy trabajando en una aplicación. Pasé algunos días tratando de encontrar una manera de hacer esto:

Tengo una aplicación simple con botones. Necesito grabar audio y enviarlo a una API cada 5 segundos. (en el código verás 6 segundos)

Necesito darle al usuario la capacidad de detener el envío de audio, pensé que esto podría lograrse presionando botones para cambiar un estado que detendría la comunicación con la API.

Aquí está mi razonamiento.

 export default function App() { const [recording, setRecording] = React.useState(); ... const uploadAudio = async (path) => { const formData = new FormData() ... async function startStreamRec () { if (stream) { try { const repet= setInterval(async ()=> { await Audio.requestPermissionsAsync(); await Audio.setAudioModeAsync({ allowsRecordingIOS: true, playsInSilentModeIOS: true, }); const recording = new Audio.Recording(); await recording.prepareToRecordAsync(Audio.RECORDING_OPTIONS_PRESET_HIGH_QUALITY); await recording.startAsync(); setRecording(recording); console.log('Recording started'); console.log(disable); console.log('Stopping recording..'); setRecording(undefined); recording.stopAndUnloadAsync(); const uri = recording.getURI(); console.log('Recording stopped and stored at', uri); setPath(uri); uploadAudio(uri); }, 6000); } catch (err) { console.error('Failed to start recording', err); } } else { clearInterval(repet); } } async function stopStream() { setStream(false); startStreamRec(); } async function startStream() { setStream(true); startStreamRec(); } return ( <View> ... <TouchableOpacity onPress={startStream} style={styles.cathButton}> <Text> Start</Text> </TouchableOpacity> <TouchableOpacity onPress={ stopStream } style={styles.cathButton}> <Text> Stop </Text> </TouchableOpacity> ... </View> ); }

Sin embargo, este código no funciona correctamente.

Probé algunas cosas con useeffect, con ganchos de estado, mientras ciclos de settimeout, setState pero todo falló. Un error común que recibo es "error: demasiados renderizados. React limita la cantidad de renderizados para evitar un bucle infinito".

No sé qué estoy haciendo mal.

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda