Javascript passare valore da una funzione ad un'altra

di il
8 risposte

Javascript passare valore da una funzione ad un'altra

Ciao potete aiutarmi?

se io dentro una funzione 1 ho la chiamata di un altra funzione 2 seguita da altre istruzioni che utilizzano un array presente nella funzione 2, come faccio a far passare il valore dell'array nella funzione 1?

es

tendina(film, numerofilm);

function tendina(film, numerofilm) {

updatesceglifilm(film, array);

alert(array);

}

l'array in questione è creato all'interno della funzione updatesceglifilm

8 Risposte

  • Re: Javascript passare valore da una funzione ad un'altra

    Utilizzi
    return
    ?
  • Re: Javascript passare valore da una funzione ad un'altra

    Non è sufficiente, nelle varie prove che ho fatto ho pensato dipenda dal fatto che nella funzione di origine la variabile array sta dentro un fetch e per qualche motivo anche se metto il return dentro il fetch non riesco a portare fuori la variaibile
  • Re: Javascript passare valore da una funzione ad un'altra

    Non è sufficiente, forse perché array sta dento un fetch? ho messo il return anche dentro il fetch però niente
  • Re: Javascript passare valore da una funzione ad un'altra

    Adrenerg1co ha scritto:


    Non è sufficiente, nelle varie prove che ho fatto ho pensato dipenda dal fatto che nella funzione di origine la variabile array sta dentro un fetch e per qualche motivo anche se metto il return dentro il fetch non riesco a portare fuori la variaibile
    Cosa vuol dire "sta dentro un fetch"? Invece di riportare del codice di esempio togliendo le parti concretamente utilizzate, riporta in versione integrale (con copia/incolla) la porzione di codice che è influenzata dalla problematica, in modo che possiamo vederla e capire cosa stai facendo, e magari in questo modo riusciamo a comprendere e a suggerire una soluzione efficace.

    Ciao!
  • Re: Javascript passare valore da una funzione ad un'altra

    Riporto il codice, si tratta di una funzione asincrona per via del fetch, ancora non so come sisntemarla
    
    
    function themovie(name) {
      var url1 = "https://api.themovie.org/movie?api_key=" + "&query=" + name;
      var array = [];
      fetch(url1)
        .then(response => response.json())
        .then(json => {
          var idmovie = json['id'];
          var titolo = json['title'];
          output = new Array(idmovie, titolo);
          array.push(output);
          return array;
        });
    }
    
    function intermedia(output) {
      output.forEach(name => {
        eseguito(name);
      });
    }
    
    function eseguito(name, array) {
      themovie(name, array);
      alert(array);
    }
    
    
  • Re: Javascript passare valore da una funzione ad un'altra

    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!
  • Re: Javascript passare valore da una funzione ad un'altra

    Grazie dell'aiuto che mi stai dando

    Utilizzando il codice suggerito ottengo Uncaught TypeError: Cannot read property 'then' of undefined

    Ti spiego il mio obiettivo; il mio scopo è utilizzare la funzione che contiene l'array chiamando la funzione da due funzioni diverse per imparare ad riutilizzare il codice già scritto; una è quella che ho messo nel post e l'altra che non ho messo per semplicità; infatti l'altra funzione porta a caricare i nomi dei film nell'array e di seguito ad altro e tutto funziona bene; volendo imparare a scrivere meno codice, nel senso di utilizzare due volte la stessa funzione invece di riscriverlo volevo utilizzare lo stesso array passato dalla stessa funzione in una cascata di funzioni differente ovvero quelle che ho postato;

    La prima volta dopo il push dell'array chiamo la funzione successiva gestioneArrayFilm(name, array); ... funzione creata normalmente function gestioneArrayFilm(name, array) { ... } e senza utilizzare alcun return l'array viene passato;

    La principale differenza è che nel primo caso la chiamata di funzione gestioneArrayFilm(name, array) è all'interno della stessa funzione in cui l'array viene creato mentre nel secondo caso questo non avviene

    Nel secondo caso invece non c'è verso di passarlo; mi sto leggendo diverse pagine della funzione promise e di altri sistemi per passare le variabili in funzioni asincronie ma la mia scarsa esperienza non mi consente di applicarle al mio codice
  • Re: Javascript passare valore da una funzione ad un'altra

    Adrenerg1co ha scritto:


    Utilizzando il codice suggerito ottengo Uncaught TypeError: Cannot read property 'then' of undefined
    Sembra che non venga restituita la Promise da qualche parte, ma il problema può essere ovunque.

    Adrenerg1co ha scritto:


    Ti spiego il mio obiettivo [...]
    Onestamente, ci ho capito poco e nulla. L'unico modo di saltarci fuori, a mio avviso, è ricostruire il codice pezzo per pezzo, andando per gradi e verificando che ogni cosa funzioni adeguatamente, postando il codice via via aggiornato e i problemi riscontrati.

    Dalla spiegazione, senza vedere il codice o vedendo un codice completo con funzioni che non conosco e di cui non capisco l'utilità, mi è impossibile decifrare lo scenario e dare altri suggerimenti oltre a quelli già forniti.
Devi accedere o registrarti per scrivere nel forum
8 risposte