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

166
Visualizações
Javascript : function that involves two functions

I'm trying to make a function call "sendAndMove" that involves two function inside. And I want two functions executed in order of setting() ---> goHome(). But when I wrote code like down below, it is exectued like goHome() ---> setting(). So I used async/await to achieve to goal.

Is this problem happend because of asynchronous feature and Call stack? And I want to know why setting() function doesn't work if page changes. Thanks a lot

function setting() {
        setFinalInfo((prev)=>{return{...prev,
          finalAddress: info.address,
          finalCode: info.code,
          finalDetailAddress: info.detailAddress,
          finalPostCode: info.postCode,
          finalExtraAddress: info.extraAddress}
        });
          
      }
      function goHome(){
        navigate("/")
      }
        
      function sendAndMove() {
        setting();
        goHome();
          
      }

So I Changed to code below.

  function setting() {
        setFinalInfo((prev)=>{return{...prev,
          finalAddress: info.address,
          finalCode: info.code,
          finalDetailAddress: info.detailAddress,
          finalPostCode: info.postCode,
          finalExtraAddress: info.extraAddress}
        });
          
      }
      function goHome(){
        navigate("/")
      }
        
      async function sendAndMove() {   ***** Changed this part
        await setting();
        await goHome();
          
      }
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

What you actually want to do is 'channel' from a callback to an awaitable promise, something like this:

function setting() {
  return new Promise((resolve) => {
    setFinalInfo((prev) => {
      resolve({
        ...prev,
        finalAddress: info.address,
        finalCode: info.code,
        finalDetailAddress: info.detailAddress,
        finalPostCode: info.postCode,
        finalExtraAddress: info.extraAddress,
      });
    });
  });
}

function goHome() {
  navigate('/');
}

async function sendAndMove() {
  await setting();
  goHome();
}

Btw, you don't need to await on goHome() since that is not an async function.

about 4 years ago · Juan Pablo Isaza Relatório

0

The optimal approach would be to set the state, and then use useEffect to watch for a change in state and then call navigate.

function update() {
  setFinalInfo((prev) => {
    return { ...prev,
      finalAddress: info.address,
      finalCode: info.code,
      finalDetailAddress: info.detailAddress,
      finalPostCode: info.postCode,
      finalExtraAddress: info.extraAddress
    }
  });
}

useEffect(() => {
  navigate('/');
}, [finalInfo]), 

about 4 years ago · Juan Pablo Isaza 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