RISOLTO [Javascript] Ritornare un array da una funzione

Pubblicità
Stato
Discussione chiusa ad ulteriori risposte.

Baio84

Nuovo Utente
Messaggi
31
Reazioni
0
Punteggio
35
Ho creato una funzione dove all'interno popolo un array che poi vorrei ritornare.

Codice:
function popoloArray () {
    var mioArray = [];
    mioArray.push('uno');
    mioArray.push('due');
    mioArray.push('tre');
    return mioArray;
}

var nuovoArray = popoloArray();

Il problema è che il valore che mi si crea è che in nuovoArray non mi ritrovo l'array ritornato dalla funzione, ma un undefined. L'array la funzione lo crea correttamente perchè se inserisco un console.log(mioArray) al suo interno, me lo stampa correttamente. A questo punto mi chiedo se un array possa essere ritornato
 
La funzione va bene e torna un array, c'è altro codice che non hai messo?
Controlla con F12 il ritorno usando console.log(JSON.stringify(nuovoArray));
 
Mi devo scusare perché ho semplificato troppo e solo ora mi rendo conto che ho sbagliato. Ho provato il codice che ho postato e funziona. Il problema è che l'array dovrebbe essere ritornato all'interno di una promise.


Codice:
function popoloArray () {
    client.object().
    then.(name => {
        var mioArray = [];
        mioArray.push(name[0]);
        mioArray.push(name[1]);
        mioArray.push(name[2]);
        return mioArray;
    })
    .catch(err => console.log(err));
    
}

var nuovoArray = popoloArray();

Scusate se risulto sempre impreciso
 
dovrebbe essere ritornato all'interno di una promise
Allora è normale che sia undefined.
Con le Promise si parla di programmazione asincrona, la tua lista sarà piena solo quando la Promise verrà risolta.

Puoi fare una cosa così:
JavaScript:
function popoloArray () {
    return new Promise((resolve, reject) => {
       client.object().
       then.(name => {
          var mioArray = [];
          mioArray.push(name[0]);
          mioArray.push(name[1]);
          mioArray.push(name[2]);
          resolve(mioArray);
      })
      .catch(err => console.log(err));
   });
}

popoloArray().then(function(nuovoArray) {
   // usi nuovoArray
});
 
Stato
Discussione chiusa ad ulteriori risposte.
Pubblicità
Pubblicità
Indietro
Top