Bonjour,

mon souci est le suivant. Je lance 2 requêtes Ajax en parallèle, une qui me permet de charger Google Maps une autre qui me charge un JSON depuis mon serveur contenant les données à afficher sur une carte Google Maps.

Je dois lancer une fonction qui me permet de traiter les données JSON et de les afficher sur la carte GMaps.

Mais comment est-ce que je peux attendre que Google Maps soit chargé ET que mes données soit chargées avant de lancer ma fonction ?

Je peux lancer un callback une fois Google Maps chargé mais je ne serai jamais certain que mes données soit chargées.
Et vice versa, je peux lancer un callback une fois mes données chargées mais je serai jamais certain que Google Maps soit chargé.

Merci :)

5 réponses


Damarus
Auteur
Réponse acceptée

J'ai trouvé une solution en utilisant la magie des objets.

var check_load = {
    i: 0,
    add: function(){
        this.i++;
        if(this.i == 2){
           traitement_data();
        }
    }
}

function traitement_data() {
    //Traitement des données
}

$.ajax(
  //chargement de google map
).done(function() {
    check_load.add();
});

$.ajax(
    //chargement des données
  ).done(function() {
    check_load.add();
});

ça fonctionne très bien et je n'ai jamais eu un chargement aussi rapide. :)

Bonjour !
je pense que tu trouvera ta réponse avec les promises en javascript. Ici avec jQuery

Salut,

Pour se faire, utilise la méthode done

$.ajax(
  //chargement de google map
).done(
  $.ajax(
    //chargement des données
  )
);
Damarus
Auteur

Si je fais comme ça les données se chargeront une fois Google Maps chargé. Les deux ne se chargent pas en parallèles.
Je regarde le fonctionnement des promesses.

Bonjour.
Marques ton sujet comme résolu alors.