• dans une fonction async, tout appel préfixé par await a pour effet de chaîner automatiquement
la promesses retournées par la fonction appelée à une promesse de continue l'exécution de
l'appelant
• tout exception durant l'exécution d'une fonction async déclenche le flot de traitement d'erreur
de la promesse.
En clair, async et await permettent d'écrire du code TypeScript avec tous les avantages des entrées/
sorties asynchrones, mais sans interrompre le flot d'écriture du code. Cela revient quasiment à une
exécution multi-tâche, mais en garantissant que le passage de contrôle d'une tâche à l'autre ne se
produira que là où le mot-clé await apparaît.
Cette librairie TypeScript utilise donc les objets Promise et des méthodes async, pour vous permettre
d'utiliser la notation await si pratique. Et pour ne pas devoir vous poser la question pour chaque
méthode de savoir si elle est asynchrone ou pas, la convention est la suivante: en principe toutes les
méthodes publiques de la librairie TypeScript sont async, c'est-à-dire qu'elles retournent un objet
Promise, sauf:
•
GetTickCount()
de sens...
•
FindModule()
l'énumération des modules est faite en tâche de fond sur des structures internes qui sont
gérées de manière transparente, et qu'il n'est donc pas nécessaire de faire des opérations
bloquantes durant le simple parcours de ces listes de modules.
Dans la plupart des cas, le typage fort de TypeScript sera là pour vous rappeler d'utiliser
de l'appel d'une méthode asynchrone.
14.3. Contrôle de la fonction Tilt
Il suffit de quelques lignes de code pour piloter un Yocto-3D-V2. Voici le squelette d'un fragment de
code TypeScript qui utilise la fonction Tilt.
// En Node.js, on référence la librairie via son package NPM
// En HTML, on utiliserait plutôt un path relatif (selon l'environnement)
import { YAPI, YErrorMsg,
import {
YTilt
} from 'yoctolib-cjs/yocto_tilt.js';
[...]
// On active l'accès aux modules locaux à travers le VirtualHub
await YAPI.RegisterHub('127.0.0.1');
[...]
// On récupère l'objet permettant d'intéragir avec le module
let tilt:
YTilt
= YTilt.FindTilt("Y3DMK002-123456.tilt1");
// Pour gérer le hot-plug, on vérifie que le module est là
if(await tilt.isOnline())
{
// Utiliser tilt.get_currentValue()
[...]
}
Voyons maintenant en détail ce que font ces quelques lignes.
Import de yocto_api et yocto_tilt
Ces deux imports permettent d'avoir accès aux fonctions permettant de gérer les modules
Yoctopuce.
yocto_api
modules contenant un inclinomètre, comme le Yocto-3D-V2. D'autres classes peuvent être utiles
dans d'autres cas, comme
type de module Yoctopuce.
Pour que
yocto_api
(soit celles de Node.js, soit celles du navigateur dans le cas d'une application HTML), il faut que
www.yoctopuce.com
, parce que mesurer le temps de manière asynchrone n'a pas beaucoup
,
,
FirstModule()
YModule
} from 'yoctolib-cjs/yocto_api_nodejs.js';
doit toujours être inclus, et
qui vous permet de faire une énumération de n'importe quel
YModule
soit correctement lié aux librairies réseau à utiliser pour établir la connexion
14. Utilisation du Yocto-3D-V2 en TypeScript
, ... parce que la détection et
nextModule()
yocto_tilt
await
est nécessaire pour gérer les
lors
105