Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

193
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda