Adrenerg1co ha scritto:
Riporto il codice, si tratta di una funzione asincrona per via del fetch, ancora non so come sisntemarla
Intanto, se scrivi quel
return array in quel modo, quello sarà il valore di ritorno della funzione che fa da risposta al callback, e quindi non sarà il valore di ritorno della funzione "themovie", se questo era l'intento.
Poi ci sono funzioni che non utilizzano i parametri che passi, vedi questo pezzo di codice:
function themovie(name)
// ...
themovie(name, array);
Come detto nelle precedenti risposte, essendoci una operazione asincrona in gioco, anche la tua risposta dovrà essere tale: non puoi avviare una operazione asincrona e, mentre questa è in esecuzione, restituire un valore e quindi far proseguire il codice chiamante, poiché quel valore non sarà ancora disponibile.
In questo caso, sarebbe opportuno che tu restituissi direttamente il valore di ritorno di
fetch() nella funzione
themovie(): questo ti permetterebbe di restituire la
Promise (vedi
la documentazione per sapere cos'è) a cui agganciarsi per sapere quando l'operazione è terminata, e definire quindi un callback da eseguire successivamente, solo in quel momento, per gestire i risultati.
Un esempio schematico:
function themovie(name) {
var url1 = "https://....";
var array = [];
fetch(url1)
.then(response => response.json())
.then(json => {
array.push({
idmovie: json.id,
titolo = json.title
});
return array;
})
}
function eseguito(name) {
themovie(name)
.then(array => {
alert(array);
});
}
Non ho idea del perché tu vada a inserire un
Array dentro un
Array, ma se spieghi meglio cosa intendi fare con questo codice, magari si può capire meglio qual è l'intento e come implementarlo.
Ciao!