1
resposta

O meu não deu certo

Fiz o seguinte código da função insertFavoritos:

async function insertFavorito(id) {
        // Função que será chamad para pegar o id de favorito do livro clicado

        await postFavorito(id);
            // Função que será chamada para fazer o Post do Livro e leva como parâmetro o id do livro

        alert(`O livro do id ${id} foi inserido com sucesso nos Favoritos`)
            // Alerta para confirmar que o livro foi add com sucesso

    }

E chamei essa função no Resultado:

{ livrosPesquisados.map( livro => (
                <Resultado onClick={ () => insertFavorito(livro.id)}>
                    <img src={ livro.src } alt='capa' />
                    <p> { livro.nome } </p>
                </Resultado>
            ) ) }

Mas dá um erro, parece que tem algum problema de Promisse.

Fiz um teste comentando essa parte do código // await postFavorito(id); da função async function insertFavorito(id) { e funcionou, pois o alert apareceu e não deu erro de Promisse no console.

1 resposta

Olá, Diógenes!

Pelo que entendi, você está tentando fazer uma chamada assíncrona para adicionar um livro aos favoritos usando a função postFavorito(id), mas está encontrando um erro de Promise.

Quando você comenta a linha // await postFavorito(id);, o erro desaparece, o que sugere que o problema pode estar na função postFavorito(id).

A função postFavorito(id) é uma chamada de API que provavelmente retorna uma Promise. Quando você usa o await, você está dizendo ao JavaScript para esperar a Promise ser resolvida antes de continuar. Se a Promise não for resolvida corretamente, você receberá um erro.

A primeira coisa que eu recomendo é verificar a função postFavorito(id). Certifique-se de que ela está retornando uma Promise e que a Promise está sendo resolvida corretamente. Você pode fazer isso adicionando um .catch() ao final da Promise para capturar e exibir quaisquer erros que possam estar ocorrendo. Aqui está um exemplo de como você pode fazer isso:

async function insertFavorito(id) {
    try {
        await postFavorito(id);
        alert(`O livro do id ${id} foi inserido com sucesso nos Favoritos`)
    } catch (error) {
        console.error('Houve um problema com a chamada postFavorito: ', error);
    }
}

Neste exemplo, se a Promise retornada por postFavorito(id) for rejeitada, o erro será capturado pelo bloco catch e exibido no console. Isso deve ajudá-lo a identificar o que está causando o problema.

Espero ter ajudado e bons estudos!