2011-04-18 2 views

Répondre

2

En fait, la fonction de rappel peut très bien être appelée de manière asynchrone, c'est-à-dire après le retour de l'appel à initData.

Si elle est synchrone cependant, vous pouvez le faire:

initData:function(period) 
      { 
       var that = this; 
       var result; 
       this.getLoadObject('0',url, function() { 
        result = that.callbackFunction(arguments)); 
       }); 
       return result; 
      }, 
+0

malheureusement son asynchrone. Toute autre solution de contournement? –

+0

Transmet un rappel en tant qu'argument à initData –

1

Bien qu'il soit impossible de dire à partir de l'extrait de code, il ressemble à votre fonction de rappel sera appelée de manière asynchrone. Si tel est le cas, vous devrez définir les variables que vous voulez remplir avec initData dans la fonction de rappel elle-même.

vous pouvez aussi envelopper la fonction de rappel:

var context = this; 
    this.getLoadObject('0',url, function() { 
     var returnedval = context.callbackFunction.apply(context,arguments); 
     context.SomeFuctionToUseValue(returnedval); 
    }); 
0

Je pense que vous pouvez utiliser la variable en dehors de la fonction, de sorte que vous pouvez y accéder à l'intérieur de la fonction de rappel et à l'extérieur.

var result = false; 
initData:function(period) 
{ 
    this.getLoadObject('0',url, this.callbackFunction); 
    //inside the callback you can modify the "result" then 
    return result; 
}, 
Questions connexes