Yoctopuce Yocto-I2C Mode D'emploi page 134

Table des Matières

Publicité

16. Utilisation du Yocto-I2C en JavaScript / EcmaScript
npm instal -g babel-cli
npm instal babel-preset-env
Normalement vous demanderez à Babel de poser les fichiers transpilés dans un autre répertoire,
nommé
par exemple. Pour ce faire, utilisez par exemple les commandes suivantes:
comopat
babel --presets env demo.js --out-dir compat/
babel --presets env ../../lib --out-dir compat/
Bien que ces outils de transpilation soient basés sur node.js, ils fonctionnent en réalité pour traduire
n'importe quel type de fichier JavaScript, y compris du code destiné à fonctionner dans un
navigateur. La seule chose qui ne peut pas être faite aussi facilement est la transpilation de sciptes
codés en dure à l'intérieur même d'une page HTML. Il vous faudra donc sortir ce code dans un
fichier
externe si il utiliser la syntaxe EcmaScript 2017, afin de le transpiler séparément avec
.js
Babel.
Babel dipose de nombreuses fonctionnalités intéressantes, comme un mode de surveillance qui
traduite automatiquement au vol vos fichiers dès qu'il détecte qu'un fichier source a changé.
Consultez les détails dans la documentation de Babel.
Compatibilité avec l'ancienne librairie JavaScript
Cette nouvelle librairie n'est pas compatible avec l'ancienne librairie JavaScript, car il n'existe pas de
possibilité d'implémenter l'ancienne API bloquante sur la base d'une API asynchrone. Toutefois, les
noms des méthodes sont les mêmes, et l'ancien code source synchrone peut facilement être rendu
asynchrone simplement en ajoutant le mot-clé
par exemple:
beaconState
= module.get_beacon();
par
beaconState
= await module.get_beacon();
Mis à part quelques exceptions, la plupart des méthodes redondantes
supprimées, car elles auraient introduit de la confusion sur la manière correcte de gérer les appels
asynchrones. Si toutefois vous avez besoin d'appeler un callback explicitement, il est très facile de
faire appeler une fonction de callback à la résolution d'une méthode async, en utilisant l'objet
Promise retourné. Par exemple, vous pouvez réécrire:
module.get_beacon_async(callback, myContext);
par
module.get_beacon().then(function(res) { callback(myContext, module, res); });
Si vous portez une application vers la nouvelle librairie, vous pourriez être amené à désirer des
méthodes synchrones similaires à l'ancienne librairie (sans objet Promise), quitte à ce qu'elles
retournent la dernière valeur reçue du capteur telle que stockée en cache, puisqu'il n'est pas
possible de faire des communications bloquantes. Pour cela, la nouvelle librairie introduit un
nouveau type de classes appelés proxys synchrones. Un proxy synchrone est un objet qui reflète la
dernière value connue d'un objet d'interface, mais peut être accédé à l'aide de fonctions synchrones
habituelles. Par exemple, plutôt que d'utiliser:
async function logInfo(module)
{
console.log('Name:
console.log('Beacon:
}
...
126
'+await module.get_logicalName());
'+await module.get_beacon());
devant les appels de méthode. Remplacez
await
ont été
XXX_async
www.yoctopuce.com

Publicité

Table des Matières
loading

Table des Matières