Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Funções assincronas rodam sem serem chamadas?

tenho essa func assinc

async function CadUserApi(){
    const user = {
        username: formName.value,
        email: formEmail.value,
        password: formPassword.value,
        avatar: formPicture.value
    }
    const createApi = {
        method: 'POST',
        headers:{
            'content-type': 'application/json'
        },
        body: JSON.stringify(user)
    }
    try{
        const sendApi = await fetch('http://localhost:3333/users/create', createApi)
        const awaitApi = await sendApi.json()
        console.log(awaitApi)
    }catch{

    }
}

e somente aqui chamo ela:

function modalShow(){ 
    buttonSign.addEventListener('click', (event)=>{
        event.preventDefault()
        CadUserApi()
        modal.classList.remove('modal-hidden')
    })
}modalShow()

porem, assim q inicio minha pagina, o usuario é enviado para api => no caso um usuario vazio! obviamente irei colocar algo q impossibilitaria enviar campos vazios, porem gostaria de entender pq esta rodando a funcao sendo q ela ainda n foi chamada !

1 resposta
solução!

Oi Felipe, tudo bem?

Desculpe a demora em retornar.

Não, funções assíncronas não rodam sem serem chamadas. O que pode estar acontecendo é que a função CadUserApi está sendo chamada em algum outro lugar do seu código, sem você perceber.

Verifique se há algum trecho de código que chama a função CadUserApi antes da chamada no evento de clique do botão. Caso contrário, pode ser um problema com o seu servidor, que está recebendo solicitações automaticamente.

Outra possibilidade é que o formulário esteja sendo enviado automaticamente quando a página é carregada, sem a necessidade de um evento de clique. Para evitar isso, você pode adicionar o atributo type="button" ao botão, para que ele deixe de ser um botão de submissão (type="submit") e passe a ser apenas um botão comum que dispara um evento de clique. Assim:

<button type="button" id="buttonSign">Enviar</button>

Isso deve evitar que o formulário seja submetido automaticamente ao carregar a página e, consequentemente, que a função CadUserApi() seja executada sem querer.

Se você não conseguir identificar o problema, tente adicionar um console.log na primeira linha da função CadUserApi para verificar quando ela está sendo chamada.

Além disso, verifique se há algum código assíncrono em outros arquivos do seu projeto que possa estar causando esse comportamento inesperado.

Um abraço e bons estudos.