2016-04-04 1 views
1

Comment puis-je obtenir la valeur var result dans ce code?javascript: renvoie la valeur de la fonction anonyme

Je sais que c'est un problème de base mais je suis à la recherche de la solution depuis 3 jours. Pouvez-vous me donner des suggestions s'il vous plaît?

function foo(myCallback){ 
} 

function bar() { 
    var result = foo(function(){ 
     var result = "hello"; 
     return result; 
    }); 
} 

var showResult = bar(); 
alert(showResult); 
+0

Vous pouvez l'obtenir dans le 'callback' – Rayon

+0

' function foo (myCallBack) {} barre de fonction (cb) { foo (function() {var résultat = "bonjour", cb (résultat); }); } bar (fonction (res) { alert (res); }); ' – Rayon

Répondre

3

Vous devez appeler le rappel et retourner la valeur de celui-ci et à l'intérieur de votre fonction bar, vous devez retourner le résultat ainsi

function foo(myCallback){ 
 
    // return the value of the call myCallback() 
 
    return myCallback(); 
 
} 
 

 
function bar(){ 
 
    var result = foo(function(){ 
 
     var result = "hello"; 
 
     return result; 
 
    }); 
 
    // return the result 
 
    return result; 
 
} 
 
var showResult = bar(); 
 
alert(showResult);

Un peu simplifié il pourrait être

function foo(myCallback){ 
 
    return myCallback(); 
 
} 
 

 
function bar(){ 
 
    return foo(function(){ 
 
     return "hello"; 
 
    }); 
 
} 
 
var showResult = bar(); 
 
alert(showResult);

+0

Vous pouvez même simplement remplacer la déclaration initiale' var result' par 'return' elle-même. En fait, dans ce cas, tout 'var result = ...; return return; 'pourrait être remplacé par' return ... ' – somethinghere

+0

@ quelque chose ici, oui, s'il vous plaît voir modifier. –

+1

Beaucoup plus propre :) – somethinghere

2

Il vous manque les instructions de retour. Ce n'est pas clair ce que vous voulez retourner.

Il fonctionne comme ceci:

function foo(myCallback){ 
    return myCallback(); 
} 

function bar(){ 
    var result = foo(function(){ 
     var result = "hello"; 
     return result; 
    }); 
    return result; 
} 
var showResult = bar(); 
alert(showResult); 
0

Vous êtes coincé à l'aide callbacks, mais heureusement, vous pouvez transmettre des paramètres dans vos fonctions de rappel:

// define your functions 
function foo(myCallback){ 
    myCallback(); 
} 

function bar(callback){ 
    var result = foo(function(){ 
     var result = "hello"; 
     callback(result); 
    }); 
} 

// now run it 
bar(function(showResult){ 
    alert(showResult); 
});