⚛️ Atom 2 Smart Remote   🚚 FREE FEDEX SHIPPING from 397 USD   🌎 WORLDWIDE SHIPPING for 25 USD

Minuteries

Introduction

La plupart du temps, vous devez faire certaines choses périodiquement ou après un certain temps, ou vous souhaitez attendre entre deux instructions.

MagiScript dispose de plusieurs fonctions pour vous aider.

Attendre

Cet appel de base ajoutera un délai à votre code. Utilisez-le à bon escient, car il bloque le moteur de script, de sorte qu'aucun autre code ne sera exécuté jusqu'à ce qu'il se termine (par exemple, aucune pression sur un bouton ou aucun délai d'attente ne sera exécuté).

Pour cette raison, nous recommandons de ne pas l'utiliser du tout. Mais pour l'expérience avec MagiScript, il est possible de l'utiliser, mais n'ajoutez pas une longue attente.

Il s'agit d'une fonction simple, avec un seul paramètre :

wait(100); // wait 100 milliseconds (0.1 seconds)

Par exemple, vous pouvez essayer ce code. La LED devient verte pendant 1 seconde, mais le code est exécuté en arrière-plan, et l'exécution du code se poursuit. La fonction wait attend ensuite 2 secondes. La DEL s'éteint au bout d'une seconde et reste éteinte pendant une seconde jusqu'à la fin de la fonction d'attente. Ensuite, elle devient jaune et reste allumée.

function main() {
    atom.led('g='); // green LED for 1 second
    wait(2000);
    atom.led('y*'); // yellow infinitely
}

Lisez la suite sur les temporisateurs ci-dessous, mais c'est l'alternative que nous recommandons. C'est plus difficile à lire, il y a plus de code, mais les événements MagiScript ne seront pas bloqués du tout.

function main() {
    atom.led('g='); // green LED for 1 second
    setTimeout(function() {
        atom.led('y*'); // yellow infinitely
    }, 2000);
    
}

Minuteries

Les minuteries permettent d'exécuter des parties de code périodiquement ou après un certain temps. Vous pouvez travailler avec 16 minuteries à la fois. Ces fonctions sont fournies par paire :

  • setTimeout et clearTimeout
  • setInterval et clearInterval

Le setTimeout déclenche un code une fois, le setInterval déclenche le code à l'infini. La fonction clearTimeout empêchera la minuterie de déclencher le code si elle est appelée avant l'exécution. La fonction clearInterval arrêtera la minuterie, de sorte qu'elle ne déclenchera plus le code.

Leur utilisation est simple :

setTimeout(function() { console.log('hello'); }, 1000);
setInterval(function() { console.log('hey'); }, 100);

setTimeout et setInterval ont besoin de deux arguments, une fonction et un intervalle en millisecondes.

Il existe au moins trois façons de passer une fonction. Vous pouvez passer une fonction "anonyme" comme dans le code ci-dessus, vous pouvez passer une "fonction flèche", et vous pouvez passer le nom d'une fonction déclarée avant ou après :

// anonymous funnction
setTimeout(function() { console.log('howdy'); }, 1000);
// arrow function
setTimeout(() => { console.log('cheers'); }, 1000);
// reference
setTimeout(log, 1000);
function log() { console.log('hiya'); }

Les fonctions setTimeout et setInterval renvoient toutes deux un nombre. Vous pouvez l'utiliser pour les annuler :

let timeoutId = setTimeout(() => console.log('I will never run'), 1000);
clearTimeout(timeoutId);

Dans l'ensemble, leur fonctionnement est assez similaire à celui de JavaScript. Si vous cherchez des idées sur la manière de les utiliser, les exemples Atom Time et Atom Level peuvent vous donner quelques indications.

croix