Voici mon code
function save_current_side(current_side) {
var result;
var final = a.b({
callback: function (a) {
console.log(a); // its working fine here
return a;
}
});
}
où b est la fonction synchrone. J'appelle la fonction ci-dessus n'importe où dans le code
var saved = save_current_side(current_side);
La variable enregistrée n'est pas définie. Comment être retourné évalué par la fonction de rappel
Si b
est une méthode synchronoys, vous stockez simplement la valeur dans une variable, afin de pouvoir la renvoyer à partir de save_current_side
fonction au lieu de la fonction de rappel:
function save_current_side(current_side) {
var result;
a.b({
callback: function (a) {
result = a;
}
});
return result;
}
Si b
est une méthode asynchrone, vous ne pouvez pas renvoyer la valeur de la fonction, car elle n'existe pas encore lorsque vous quittez la fonction. Utilisez un rappel:
function save_current_side(current_side, callback) {
a.b({
callback: function (a) {
callback(a);
}
});
}
save_current_side(current_side, function(a){
console.log(a);
});
Vous devez soumettre la fonction de rappel. Exemple:
function save_current_side(current_side, callback) {
a.b({
callback: callback
});
}
save_current_side(current_side, function() {
console.log('saved'):
});
Il vous suffit de passer le rappel comme argument dans la fonction comme indiqué ci-dessous
function save_current_side(current_side,callback) {
var result;
var final = a.b(function(){
callback(a);
});
}
Voici comment l'appeler n'importe où dans le code
var saved;
save_current_side(current_side,function(saved){
console.log(saved);
});