Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Valorizzare variabili da promise

    ciao!

    io avrei necessità di valorizzare una variabile da promise.
    nello specifico sto usando axios, ma penso cambi poco.

    questo è il mio ultimo tentativo:
    codice:
    var books = [];
    
    axios.get(BOOK_ALL)
        .then(res => {
            books = res.data.books;
            console.log(books);
    });
    console.log(books);
    ovviamente il secondo console è vuoto.
    il primo no.
    ho capito che il problema è che viene valorizzato nella promise, e che quindi non viene visto al di fuori.
    ma come posso fare per ottenere quello mi serve????

  2. #2
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Ciao, logicamente essendo una promise e' asyncrona, diciamo un po' come quando si usa Ajax.post()(o simili) di jQuery.
    La risposta sta appunto in attesa e ti arriva appunto all'interno del tuo .then() e .cath() se va in errore.
    Pertanto se devi fare qualcosa con quei dati lo devi fare al suo interno.
    Gli esempi li trovi qui https://github.com/axios/axios

    Cosa dovresti fare esattamente?

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    Guardati l'utilizzo di async/await.
    Qui una guida utile: https://www.html.it/pag/69778/funzio...on-asyncawait/

  4. #4
    ciao!

    essendo in react ho risolto usando useEffect e useState:
    codice:
    export default function Home() {
        const classes = useStyles();
        const [books, setBooks] = useState([]);
    
        useEffect(() => {
            async function getBooks() {
                const result = await axios.get(BOOK_ALL);
                setBooks(result.data.books)
            }
    
            getBooks();
        }, []);
    
        return (
            <Paper className={classes.root}>
                <Table className={classes.table} size="small">
                    <TableHead>
                        <TableRow>
                            <StyledTableCell>Dessert (100g serving)</StyledTableCell>
                            <StyledTableCell align="right">Calories</StyledTableCell>
                            <StyledTableCell align="right">Fat&nbsp;(g)</StyledTableCell>
                            <StyledTableCell align="right">Carbs&nbsp;(g)</StyledTableCell>
                            <StyledTableCell align="right">Protein&nbsp;(g)</StyledTableCell>
                        </TableRow>
                    </TableHead>
                    <TableBody>
                        {books.map(row => (
                            <StyledTableRow key={row.id}>
                                <StyledTableCell component="th" scope="row">
                                    {row.title}
                                </StyledTableCell>
                                <StyledTableCell align="right">{row.author}</StyledTableCell>
                                <StyledTableCell align="right">{row.editor}</StyledTableCell>
                                <StyledTableCell align="right">{row.price}</StyledTableCell>
                                <StyledTableCell align="right">{row.isbn}</StyledTableCell>
                            </StyledTableRow>
                        ))}
                    </TableBody>
                </Table>
            </Paper>
        );
    }
    il mio problema era adattarlo a react senza usare le classi.
    in effetti ero stato un pò vago.
    ma girando ho fatto la ricerca giusta e trovato la situazione più corretta nel mio caso!
    grazie cmq!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.