2017-09-09 2 views
-2

Je dois appeler fonctionn de functionBComment utiliser les fonctions de rappel dans

function A() { 
    // File read etc functionality goes here// 
    return data; 
} 

function B() { 
    var result = A(); 
} 

ici en raison de mon résultat asynchrone var noeud est vide fonctionner même un rendement data.Can quelqu'un s'il vous plaît aider me.thanks.

+0

si le code asynchrone est '// fichier en lecture fonctionnalité etc passe ici //' alors, oui, vous ne pouvez pas revenir résultat de code asynchrone synchrone –

+0

en double possible de [Comment puis-je renvoyer la réponse d'un appel asynchrone?] (https://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call) –

Répondre

0

Votre exemple est incorrect. Il n'y a pas asyncroniusly dans le code fourni. Et pour appeler la fonction A à l'intérieur de B, vous n'avez plus besoin d'écrire la fonction, écrivez juste A(), et vous obtiendrez votre résultat. Pour obtenir un résultat asynchrone, vous devez changer votre approche de codage.

Si vous ne voulez pas obtenir un résultat asynchrone, vous devriez envisager d'utiliser des promesses ou des rappels.

Comme ici:

//cb will be callback function that is provded by the caller code 
//in this example it is a anonymouse function from B 
function A(cb) { 
    // File read etc functionality goes here// 
    //this callback should be called when data is ready 
    cb(data); 
} 

function B() { 
    A(function (data) { 
    //do with data what you want here 
    }); 
} 
+0

Lorsque je console les données Je reçois, mais quand je console le résultat, je deviens aussi vide. – tester

+0

J'ai mis à jour la réponse. – QuestionAndAnswer