• 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 Temperature
Il suffit de quelques lignes de code pour piloter un Yocto-Temperature-IR. Voici le squelette d'un
fragment de code TypeScript qui utilise la fonction Temperature.
// 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 {
YTemperature
[...]
// 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 temperature:
YTemperature
);
// Pour gérer le hot-plug, on vérifie que le module est là
if(await temperature.isOnline())
{
// Utiliser temperature.get_currentValue()
[...]
}
Voyons maintenant en détail ce que font ces quelques lignes.
Import de yocto_api et yocto_temperature
Ces deux imports permettent d'avoir accès aux fonctions permettant de gérer les modules
Yoctopuce.
yocto_api
gérer les modules contenant un capteur de température, comme le Yocto-Temperature-IR. D'autres
classes peuvent être utiles dans d'autres cas, comme
énumération de n'importe quel 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';
} from 'yoctolib-cjs/yocto_temperature.js';
=
YTemperature.FindTemperature("YTEMPIR1-123456.temperature"
doit toujours être inclus, et
soit correctement lié aux librairies réseau à utiliser pour établir la connexion
14. Utilisation du Yocto-Temperature-IR en TypeScript
, ... parce que la détection et
nextModule()
yocto_temperature
qui vous permet de faire une
YModule
lors
await
est nécessaire pour
97