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 :

return d'une fonction contenant un callback


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2003
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2003
    Messages : 52
    Par défaut return d'une fonction contenant un callback
    Salut à tous,
    pour remplacer les vieux, et inadapté "prompt()" sur un site, j'utilise la librairie vex.

    Pour simplifier la mise en place, je voudrai intégrer son appel dans un fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function prompt2(txt, defaut){  
        vex.dialog.prompt({
            unsafeMessage: txt,
            placeholder: defaut,
            className: 'vex-theme-default',
            callback: function (value) {
                return value;
            }
        })
    }
    Comme ça je n'aurai plus qu'a remplacer tous les prompt( par prompt2(

    Le problème est que je n'arrive pas à récupérer la valeur de retour.

    J'ai essayé a mais ça ne marche pas non plus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function prompt2(txt, defaut){  
        var Retour = '';
        vex.dialog.prompt({
            unsafeMessage: txt,
            placeholder: defaut,
            className: 'vex-theme-default',
            callback: function (value) {
                Retour = value;
            }
        })
        return Retour;
    }
    Je l'appelle comme ça par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var test = prompt2('Votre age ?', '18');
    console.log(test);
    Une idée ? Merci.

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 666
    Par défaut
    la valeur est retourné à l'appel de "callback", donc elle n'est pas encore disponible quand l'appel à "prompt2" est terminé.

    essayez quelque chose comme cela :
    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
    17
    18
    19
    20
    21
    22
    function prompt2(txt, defaut, fonction_retour) {
     
    	vex.dialog.prompt({
    		unsafeMessage : txt,
    		placeholder : defaut,
    		className : 'vex-theme-default',
    		callback : fonction_retour,
    	});
     
    }
     
     
    prompt2(
    	  'Votre age ?'
    	, '18'
    	,
    	function (value) {
     
    		console.log("réponse age : " + value);
     
    	}
    );

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2003
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2003
    Messages : 52
    Par défaut
    Merci Mathieu,
    en effet comme ça, ça marche, mais du coup pas moyen de remplacer tous les prompt() par prompt2() dans mon projet ? (je pensai utiliser la fonction remplacer de Netbeans, ainsi que pour les alert() et confirm())

    J'ai essayé ça mais j'ai l'affichage dans la console avant le prompt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var Retour = '';
    prompt2('Votre age ?', '18', function (value) { Retour = value; } );            
    console.log("reponse age : " + Retour);
    Au mieux ça sera remplacer ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var Saisie = prompt('Votre age ?', '18');
    if (Saisie != null){
    	...
    }
    par ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    prompt2('Votre age ?', '18', function (Saisie) {
    	if (Saisie != null){
    		...
    	}
    } );

Discussions similaires

  1. Lancer un script (et pas une fonction) avec un callback
    Par braxxe dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 26/03/2009, 11h44
  2. plusieurs return dans une fonction?
    Par contremaitre dans le forum C
    Réponses: 27
    Dernier message: 21/02/2008, 09h35
  3. valeur du return dans une "fonction"
    Par Papy214 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 20/12/2007, 15h53
  4. Requête au sein d'une fonction contenant une variable
    Par hel22 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 11/07/2007, 13h03
  5. [PHP-JS] return d'une fonction checkbox
    Par xaaros dans le forum Langage
    Réponses: 2
    Dernier message: 22/12/2006, 15h22

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