2017-06-17 2 views
0

Avant cela est marqué comme un double: J'ai lu les messages toute la journée à ce sujet donc je sais qu'il ya des tonnes de similaires des questions sur le SO, mais aucun qui J'ai vu jusqu'ici aller dans les détails que je dois comprendre.JavaScript - comment utiliser Setters et Getters pour créer un auditeur

Cela dit, il n'y a pas d'exemples commentés du fonctionnement du processus. Quelqu'un pourrait-il répondre à la question suivante avec un exemple bien commenté afin que je puisse enfin comprendre cette capacité?

J'ai une fonction que je veux appeler dans un fichier mais je dois m'assurer qu'un autre événement dans un autre fichier est déjà arrivé avant que je l'appelle. Ces fichiers n'ont aucune connexion (l'un est un fichier angulaire de type 2 TypeScript qui lance l'application et l'autre est un fichier JS qui gère un tour de type hopscotch). Je comprends que j'aurai besoin d'utiliser une variable globale et je crois que la meilleure solution que j'ai lue va impliquer l'utilisation de setters et getters. Tous les exemples que j'ai vu semblent supposer que c'est juste intuitif et laisser de côté la partie où je peux comprendre comment cela fonctionne. Peut-être que c'est intuitif mais je ne fais pas encore le saut.

Variable globale dans le fichier tapuscrit:

global_variable = false; 

Fonction Je veux appeler dans le fichier JavaScript basé sur l'auditeur:

function call_if_other_function_finishes() { 
    if (global_variable === true) { // I have the global already created 
     // run hopscotch tour 
    } 
} // how do I turn this into a listener? 

La fonction que je dois avoir terminé premier dans le fichier tapuscrit:

function someFunction() { 
    // run its code 
    GlobalFile.global_variable = true; // Should trigger the listener. 
} 

Merci d'avance!

+1

Utilisez une promesse ... – charlietfl

+0

Non, ne pas utiliser setter/getter que rendre tout confus. Faites simplement de la variable globale une fonction de rappel que vous pouvez appeler. – Bergi

+0

Je comprends et apprécie de me donner d'autres suggestions. Mais que je finisse ou non par utiliser l'approche setter/getter, je veux toujours le comprendre. –

Répondre

0

Une solution consiste à définir simplement la fonction que vous faites dans votre exemple, puis exécutez quand vous en avez besoin:

function someFunction() { 
    // run its code 
    call_if_other_function_finishes() // it's globally defined anyway 
}