RISOLTO [Javascript] Ritornare un array da una funzione

Stato
Discussione chiusa ad ulteriori risposte.

Baio84

Nuovo Utente
31
0
CPU
Intel Pentium 4
Scheda Madre
ASUS Oxford
HDD
150 GB
RAM
DDR 1,50 GB
GPU
GeForce 6200
Monitor
Benq T720
OS
Windows 7 Ultimate 32 bit SP1
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
 

Mursey

Super Moderatore
Staff Forum
Utente Èlite
8,246
5,675
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));
 

Baio84

Nuovo Utente
31
0
CPU
Intel Pentium 4
Scheda Madre
ASUS Oxford
HDD
150 GB
RAM
DDR 1,50 GB
GPU
GeForce 6200
Monitor
Benq T720
OS
Windows 7 Ultimate 32 bit SP1
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
 

Mursey

Super Moderatore
Staff Forum
Utente Èlite
8,246
5,675
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
});
 

Baio84

Nuovo Utente
31
0
CPU
Intel Pentium 4
Scheda Madre
ASUS Oxford
HDD
150 GB
RAM
DDR 1,50 GB
GPU
GeForce 6200
Monitor
Benq T720
OS
Windows 7 Ultimate 32 bit SP1
Grazie mille! Ho risolto come mi hai consigliato
 
Stato
Discussione chiusa ad ulteriori risposte.

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili