Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

188
Views
¿Cómo puedo devolver dos cadenas diferentes basadas en bloques try/finally usando setTimeout?

Estoy tratando de devolver dos estados diferentes según el temporizador establecido en setTimeout en los bloques try/finally, pero una vez que devuelvo el estado en el bloque try, el bloque finalmente no devuelve nada. ¿Hay alguna manera de evitar esto? Estoy tratando de pasar un valor de cadena que será una notificación y luego, 5 segundos después, devolver una cadena vacía para que la notificación pueda borrarse...

 import { createSlice } from "@reduxjs/toolkit"; const notificationSlice = createSlice({ name: 'notification', initialState: '', reducers: { createNotification: { reducer(state, action) { try { state = `You voted for ${action.payload[0]}` } finally { setTimeout(() => { state = ' ' }, 5000); } return state }, prepare(...args) { return { payload: args } } } }}) export const { createNotification } = notificationSlice.actions export default notificationSlice.reducer
about 4 years ago · Santiago Gelvez
2 answers
Answer question

0

Debido a que setTimeout es asíncrono, el return state en realidad se ejecuta antes de que se ejecute la devolución de llamada de setTimeout.
Entonces, su estado se devuelve primero, luego, cuando se ejecuta la devolución de llamada, no hará nada. No creo que el try...finally haga alguna diferencia aquí.
Tendría que implementar otro método reduces , para cerrar la notificación, y ejecutarlo con un setTimeout .
(lo siento, no estoy seguro de cómo se vería eso aquí, pero eso es lo que tenía que hacer cuando trabajé con reductores de reacción)

about 4 years ago · Santiago Gelvez Report

0

Puede devolver un objeto en lugar de una cadena.

 try { state.foo = `You voted for ${action.payload[0]}` } finally { setTimeout(() => { state.foo = '' }, 1000); } return state
about 4 years ago · Santiago Gelvez Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!