Differences

This shows you the differences between two versions of the page.

Link to this comparison view

sde:laboratoare:12_fr_js [2020/05/05 22:33]
diana.ghindaoanu created
— (current)
Line 1: Line 1:
-====== TP 12 - Opérations asynchrones ====== 
  
-===== Présentation théorique ===== 
- 
-Les opérations asynchrones sont des opérations non bloquantes, c'​est-à-dire qu'​elles renvoient un résultat immédiat, le traitement étant effectué en arrière-plan. 
- 
-Dans ce laboratoire,​ nous utiliserons des fonctions asynchrones pour effectuer des opérations qui nécessitent un traitement (par exemple, la lecture du fichier). 
- 
-<​note>​ 
-Dans ce laboratoire,​ vous utiliserez l'​environnement de programmation Node.js. 
-</​note>​ 
- 
-===== Node.js ===== 
- 
-Node.js est un environnement de programmation JavaScript caractérisé par la prise en charge des opérations asynchrones. 
- 
-Pour installer node.js, accédez au lien suivant: https://​nodejs.org/​en/​. 
- 
-===== Fonctions asynchrones ===== 
- 
-Dans node.js, une fonction asynchrone a le format suivant: 
- 
-<code javascript>​ 
-function foo ([p1, p2, ..., ]callbackFunction){ 
-    <​code>​ 
-    callbackFunction ([param1, param2,​...]);​ 
-} 
-</​code>​ 
- 
-Fondamentalement,​ la fonction asynchrone reçoit en paramètre une autre fonction, qu'​elle appelle une fois le traitement terminé. 
- 
-L'​appel d'une fonction asynchrone a le format suivant: 
- 
-<code javascript>​ 
-foo ([p1, p2, ...,] function ([param1, param2,​...]){ 
-    <​code>​ 
-}); 
-</​code>​ 
- 
-Le même code peut être écrit comme ceci: 
- 
-<code javascript>​ 
-foo ([p1, p2, ...,] ([param1, param2,​...])=>​{ 
-    <​code>​ 
-}); 
-</​code>​ 
- 
-L'​appel à une fonction asynchrone reviendra immédiatement et le programme continuera à exécuter d'​autres appels de fonction. Dans l'​intervalle,​ le système d'​exploitation traitera les demandes de fonctions précédentes. Lorsque le traitement d'une fonction est prêt, la fonction de rappel sera appelée et la routine qui lui est associée sera exécutée. 
- 
-====fs==== 
- 
-[[https://​nodejs.org/​api/​fs.html|fs]] est le module Node.js qui prend en charge les opérations sur les fichiers. Les fonctions les plus importantes qui y sont exposées sont: 
- 
-   * [[https://​nodejs.org/​api/​fs.html#​fs_fs_readfile_path_options_callback|fs.readFile]];​ 
-   * [[https://​nodejs.org/​api/​fs.html#​fs_fs_writefile_file_data_options_callback|fs.writeFile]];​ 
-   * [[https://​nodejs.org/​api/​fs.html#​fs_fs_readdir_path_options_callback|fs.readDir]];​ 
- 
-Le programme ci-dessous utilise des fonctions asynchrones pour écrire un fichier, après quoi il lit son contenu: 
- 
-<code javascript>​ 
-const fs = require ('​fs'​);​ 
-fs.writeFile ('​myFile',​ 'my message',​ function (err){ 
-  console.log ('​Processing done'​);​ 
-  if (err){ 
-    console.log ('​There was an error writing the file'​);​ 
-  } 
-  else{ 
-    fs.readFile ('​myFile',​ function (err, data){ 
-      if (err){ 
-        console.log ('​There was an error reading the file'​);​ 
-      } 
-      else{ 
-        console.log (data.toString());​ 
-      } 
-    }); 
-  } 
-}); 
-</​code>​ 
- 
-====child_process==== 
- 
-[[https://​nodejs.org/​api/​child_process.html|child_process]] est le module qui permet la création de processus enfants et l'​interaction avec eux. 
- 
-Le module décrit les fonctions importantes suivantes: 
- 
-   * [[https://​nodejs.org/​api/​child_process.html#​child_process_child_process_execfile_file_args_options_callback|execFile]] 
-   * [[https://​nodejs.org/​api/​child_process.html#​child_process_child_process_spawn_command_args_options|spawn]] 
- 
-La différence entre les deux fonctions est que ''​execFile''​ reçoit un rappel en tant que paramètre qui sera appelé une fois que le processus enfant aura terminé son exécution, tandis que spawn renvoie une structure qui pré-présente le processus enfant, qui enregistre les événements. 
- 
-Le programme suivant lance un processus utilisant les deux fonctions: 
- 
-<code javascript>​ 
-const child_process = require ('​child_process'​);​ 
-child_process.execFile ('​ls',​ function (err, stdout, stderr){ 
-  if (err) console.log ('​Execution had an error'​);​ 
-  console.log ('​output messages'​+stdout);​ 
-  console.log ('​error messages'​+stderr) 
-}); 
-  
-const proc = child_process.spawn ('​ls'​);​ 
-proc.on ('​data',​ function (data){ 
-  console.log ('​Spawn process output: '​+data);​ 
-}); 
-  
-proc.on ('​close',​ function (){ 
-  console.log ('​Spawn process closed.'​);​ 
-}); 
-</​code>​ 
- 
-======Exercices====== 
- 
-<note warning> 
-Pour résoudre ces exercices, vous n'​utiliserez que des fonctions asynchrones. 
-</​note>​ 
- 
-===== Exercice 1 - Lecture des fichiers ===== 
-Créez un programme qui utilise le module fs pour afficher le contenu de deux fichiers texte. Vous pouvez choisir deux fichiers texte sur le système. 
- 
-Exécutez le programme plusieurs fois et notez comment ils sont affichés. 
- 
-===== Exercice 2 - Lecture du dossier ===== 
-Créez un programme qui affiche le contenu du répertoire parent. 
- 
-===== Exercice 3 - Creation des fichiers ===== 
-Créez un programme qui crée deux fichiers, puis affiche leur contenu et le contenu du répertoire en cours, où les fichiers générés doivent être affichés. 
- 
-===== Exercice 4 - pwd ===== 
- 
-Créez un programme qui exécute la commande pwd puis la commande ls ... Résolvez l'​exigence de deux manières. 
- 
-===== Exercice 5 - Input ===== 
- 
-Créez le fichier ''​script.sh''​ avec le contenu suivant: 
- 
-<code bash> 
-read text 
-echo $text 
-</​code>​ 
- 
-Créez un programme qui exécute le script ci-dessus. Le programme doit envoyer une ligne de texte au script. (Indice: subprocess.stdin). 
- 
-===== Exercice 6 - File input ===== 
-Créez un fichier sur le système contenant une ligne de texte. Modifiez le programme ci-dessus pour que la ligne de texte soit celle lue dans le fichier. 
- 
-===== Exercice 7 ===== 
-Créez un programme qui essaie de lire un fichier inexistant. Affichez l'​erreur reçue et extrayez son code. 
- 
-===== Exercice 8 - Execution error ===== 
- 
-Annulez le droit d'​exécuter le script créé dans l'​exercice 5, puis essayez de l'​exécuter. Affichez l'​erreur reçue et extrayez son code. 
sde/laboratoare/12_fr_js.1588707225.txt.gz · Last modified: 2020/05/05 22:33 by diana.ghindaoanu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0