2015-03-26 2 views
-1

Je développe une application avec Intel XDK et Cordova.navigator.globalization.getPreferredLanguage ne s'exécute pas immédiatement

Au début du code, j'utilise ces lignes pour obtenir la langue préférée du dispositif et la stocker dans une variable appelée « lang »:

navigator.globalization.getPreferredLanguage(
       function (language) { 
        lang = language.value; 
       }, 
       function() {alert('Err');} 
      ); 

J'ai quelques lignes de code où je besoin de cette variable "lang" et de sa valeur, mais pour une raison quelconque, cette fonction est en cours d'exécution à la fin, donc pendant tout le code d'exécution lang est égal à null.

Y a-t-il un moyen de s'assurer que cette fonction est terminée et que lang a sa valeur, avant de continuer?

+0

Vous devez généralement attendre après l'envoi de l'événement deviceready avant d'interagir avec les API Cordova. C'est probablement le cas ici. –

+0

Ce code est en cours d'exécution après l'événement deviceready. Je vous remercie. – garfield185

+1

Ok - l'autre partie est l'appel de la fonction sera asynchrone, de sorte qu'il s'exécutera en arrière-plan et le reste de vos appels s'exécutera. Si vous avez besoin de résultat, déplacez ce code dans la fonction (language) {} part –

Répondre

0

Oui, comme Ian a dit dans les commentaires, il suffit de déplacer tout le code que vous devez exécuter après dans la fonction ci-dessous cette ligne de code: lang = language.value;

Vous pouvez imbriquer plusieurs appels asynchrones de cette façon aussi.