IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Fonctions principales et fonctions callback


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 44
    Par défaut Fonctions principales et fonctions callback
    Bonjour à tous,

    Je rencontre un petit soucis avec JavaScript dans le cadre du développement d'une application.

    Je dipose d'une fonction, qui, suivant les OS doit avoir un processus différent mais qui entre et doit retourner la même chose. Cependant, pour un des OS (iOS pour ne pas le citer), la procédure requiert de passer par des fonctions callback.

    Aussi, comment faire pour que la fonction "principale" récupère les résultats de la fonction "callback" sachant que :
    - La fonction callback n'est pas executée dans la fonction principale
    - Le déroulement de la fonction principale continue et n'attends pas le retour du callback.

    Je vous avoue que je sèche grandement et que toute aide serait la bienvenue

    J'ai déjà essayé des bricolages qui n'ont pas révélé de résultats positifs :

    Dans ce cas, l'application appelle la fonction "setLastValue()" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
        var lastValue = null;
     
        function setLastValue(v) { lastValue = v }
     
        function mainFunction(q) {  
            $.ajax({
                url: "ios:requete vers l'app principale",
                cache: false,
                async: false,
                success: function(o) {
                    // return lastValue;
                }
            })
     
            return lastValue;
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        var lastValue = null;
     
        function setLastValue(v) { lastValue = v }
     
        function mainFunction(q) {  
            document.location = "ios:requete vers l'app principale",
            do {
                 value = lastValue; lastValue = null; return value;
            } while(lastValue != null);
        }
    Merci,
    Nico.

  2. #2
    Membre expérimenté Avatar de MaitreKaio
    Profil pro
    Freelance Java / Web / Mobile
    Inscrit en
    Juin 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Freelance Java / Web / Mobile
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2007
    Messages : 140
    Par défaut
    Si ta fonction principale peut continuer, j'imagine que c'est parce que les informations retournées par ton appel ne sont pas essentielles à son bon déroulement.
    Peux-tu isoler les traitements que tu veux faire à partir de ces informations, les mettre dans une fonction séparée ? Si oui, il te reste juste à faire un appel ajax asynchrone et à mettre cette nouvelle fonction en callback de la requête.

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    Elle sont exécutées ou les fonctions ...

    tu fais un ajax vers une page externe ...

    ajax ne converse que pas string ...

    dans le success tu recupères du string qui sera interprété ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Par défaut
    pour ma part la solution est des structurer ses fichiers en widget , voir sur le site UI de jquery ( c en note )

    pour te répondre l'utilisation de trigger semble idéal

    http://api.jquery.com/trigger/

    l’énorme avantage étant de pouvoir créer tes propres événements, donc plus seulement les événements basic, mais en plus de pouvoir les faire tourner simultanément

    ne tiens à toi que de créer une liste de bind possible (pour pas faire coincer la bécane)

    cdtl

Discussions similaires

  1. [AC-2003] Appeller une sous fonction dans la fonction principale
    Par MatAir dans le forum VBA Access
    Réponses: 3
    Dernier message: 10/06/2010, 16h04
  2. Réponses: 1
    Dernier message: 27/08/2009, 16h32
  3. Réponses: 3
    Dernier message: 05/04/2009, 11h10
  4. la fonction principale main
    Par bahiatoon dans le forum Débuter
    Réponses: 11
    Dernier message: 06/11/2008, 09h13
  5. Début de la fonction principale
    Par Minouchka dans le forum Débuter
    Réponses: 6
    Dernier message: 23/11/2007, 17h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo