11484 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous,
J’ai un problème AJAX que je n’arrive pas à résoudre.
Je dois récupérer des données depuis ma base de données ainsi :

const getData = async function() {
    let response = await fetch(‘get-data.php’);
    let json = await response.json();
    return json.map(el => new Test(el))
}

Jusque là, tout va bien. Maintenant, j’ai un constructeur qui fait ceci :

class App {
    constructor() {
        this.data = []
        getData().then(arr => data.push(…arr))
        console.log(this.data.length) // 0
        this.otherProperty = new Test2(this.data) // Vu que this.data est vide, this.otherProperty est mal construit
    }
}

Au moment où je fais mon log, la fonction dans le then n’a pas encore encore été exécutée mais le problème, c’est que je veux créer d’autres propriétés dans mon constructeur qui sont basées sur this.data.
Quelqu’un aurait-il une solution ? Smiley lol
Modifié par william_pooyan (01 Feb 2022 - 09:19)
Modérateur
Bonjour,

On doit faire ces initialisations à l'intérieur du getData().then(), c'est à dire qu'il faut remplacer data.push(…arr) par un code plus complexe qui inclut les initialisations à effectuer.

On peut aussi faire un getData().then(... ici un code ...).then(... ici un complément de code ...).

Amicalement,
Modifié par parsimonhi (01 Feb 2022 - 12:26)