Javascript Asynchrone

Explore l'utilité et la puissance de Javascript Async en profondeur à travers ce guide détaillé. Plonge dans le monde fascinant de la programmation asynchrone, en commençant par comprendre le concept et la façon dont Javascript l'incorpore dans des applications pratiques. Acquiers une compréhension complète des constructions asynchrones en Javascript, et observe leur utilité dans des scénarios réels. Plonge dans les diverses techniques qui facilitent l'asynchronisme en Javascript, avec des illustrations pratiques pour améliorer tes connaissances. Enfin, analyse en détail les différentes techniques utilisées dans la programmation asynchrone et leur impact sur le codage Javascript.

C'est parti

Des millions de fiches spécialement conçues pour étudier facilement

Inscris-toi gratuitement

Achieve better grades quicker with Premium

PREMIUM
Karteikarten Spaced Repetition Lernsets AI-Tools Probeklausuren Lernplan Erklärungen Karteikarten Spaced Repetition Lernsets AI-Tools Probeklausuren Lernplan Erklärungen
Kostenlos testen

Geld-zurück-Garantie, wenn du durch die Prüfung fällst

Review generated flashcards

Inscris-toi gratuitement
Tu as atteint la limite quotidienne de l'IA

Commence à apprendre ou crée tes propres flashcards d'IA

Équipe éditoriale StudySmarter

Équipe enseignants Javascript Asynchrone

  • Temps de lecture: 20 minutes
  • Vérifié par l'équipe éditoriale StudySmarter
Sauvegarder l'explication Sauvegarder l'explication
Tables des matières
Tables des matières

Sauter à un chapitre clé

    Introduction à l'asynchronisme en Javascript

    Javascript Async, qui signifie asynchrone, fait référence à un modèle de conception qui permet l'exécution non bloquante du code. En termes plus simples, cela signifie que tu n'as pas besoin d'attendre qu'un morceau de code soit terminé avant de passer à l'exécution du morceau de code suivant.

    Comprendre le concept asynchrone en informatique

    Le terme "asynchrone" provient du mot grec "asynkhronos", qui signifie "qui ne se produit pas en même temps". Dans le domaine de l'informatique :

    Les opérations asynchrones sont les opérations exécutées indépendamment du déroulement principal du programme. Les actions asynchrones sont des actions exécutées dans un schéma non bloquant, permettant au flux principal du programme de poursuivre son traitement.

    Dans la vie de tous les jours, on peut comparer une personne qui reçoit une notification de téléphone pendant un repas. Dans un scénario synchrone, tu arrêterais complètement de manger, tu décrocherais ton téléphone et tu ne continuerais à manger qu'une fois l'appel terminé. En revanche, dans un scénario asynchrone, tu refuserais instantanément l'appel ou tu le laisserais traiter par ta boîte vocale, ce qui te permettrait de continuer à manger sans interruption. Il en va de même pour les langages de programmation, notamment JavaScript, où les opérations sont paramétrées pour ne pas interférer avec d'autres afin d'éviter le blocage de l'exécution. Des exemples de ce concept peuvent être vus dans de multiples caractéristiques ou fonctions de JavaScript, telles que :
    • SetTimeout
    • XMLHttpRequest, API fetch
    • Lecture de fichiers en Node.js

    Comment JavaScript met en œuvre la fonctionnalité asynchrone

    JavaScript met en œuvre la fonctionnalité asynchrone à l'aide de quelques techniques :
    • Rappels
    • Promesses
    • Async/Attente
    RappelsFonctions qui sont glissées comme arguments dans une autre fonction et qui ne s'exécutent qu'une fois l'exécution de la fonction principale terminée.
    PromessesElles renvoient une valeur qui peut être actuellement inconnue, mais qui finira par être résolue.
    Async/AttenteFait en sorte que le code asynchrone apparaisse et se comporte comme du code synchrone.
    Ces techniques permettent d'écrire du code avec moins d'erreurs et sont plus efficaces en termes de temps d'exécution. Elles permettent également de résoudre le problème de l'enfer des callbacks, une situation dans laquelle les callbacks sont imbriqués les uns dans les autres, ce qui rend le code difficile à lire et à déboguer.

    Par exemple, le chargement d'une vidéo est un processus qui prend du temps. Mais en utilisant des fonctions asynchrones, un site Web peut charger le reste pendant que la vidéo est encore en cours de chargement. Il en résulte une meilleure expérience pour l'utilisateur, qui peut commencer à interagir avec le reste du site sans attendre le chargement de la vidéo.

    Alors que les callbacks étaient la première façon de travailler avec du code asynchrone, les promesses et async/await sont des ajouts modernes à JavaScript et rendent le travail avec du code asynchrone beaucoup plus facile et lisible.

    J'espère que cette introduction à l'asynchronisme en JavaScript t'a été utile. N'oublie pas que la compréhension du concept asynchrone en JavaScript, ainsi que dans d'autres langages de programmation, améliore considérablement ta capacité à écrire un code efficace, rapide et facile à lire !

    Comprendre Async Await en JavaScript

    Comprendre Async Await en JavaScript est crucial pour gérer efficacement les opérations asynchrones dans ton code. C'est une approche moderne qui rend ton code asynchrone plus propre, plus facile à lire et plus facile à gérer.

    Décomposition de la structure Async Await en JavaScript

    Le code asynchrone en JavaScript peut être assez complexe avec les rappels traditionnels et même les promesses. Avec l'introduction d'Async/Await dans ES2017, JavaScript a considérablement simplifié la façon dont tu écris et maintiens le code asynchrone.

    'Async' et 'Await' sont des extensions des promesses. 'Async' est un mot-clé qui est utilisé pour déclarer une fonction comme une fonction asynchrone qui renvoie implicitement une promesse. 'Await' est utilisé à l'intérieur d'une fonction Async pour mettre en pause l'exécution de la fonction jusqu'à ce qu'une promesse spécifique soit résolue.

    Voici un exemple simple :
    async function myFunction() {...}
    Ce code déclare une fonction asynchrone 'myFunction()'. Elle renvoie une promesse. Si la fonction génère une erreur, la promesse sera rejetée. Si la fonction termine son exécution sans commettre d'erreur, elle sera résolue.
    let result = await someAsyncCall() ;
    'await' ne fonctionne qu'à l'intérieur d'une fonction asynchrone et est placé devant un appel à une fonction qui renvoie une Promesse. Il mettra en pause l'exécution de la fonction asynchrone jusqu'à ce que la Promesse soit réglée, puis reprendra l'exécution avec la valeur rejetée ou résolue. Si tu veux exécuter des fonctionnalités à côté de la promesse qui attend d'être résolue, tu peux le faire sans aucun blocage. JavaScript, qui est un langage non bloquant, exploite brillamment Async Await pour cela. Par la suite, aucun rappel "then" n'est nécessaire lors de l'utilisation d'Async-Await. Souviens-toi que cela n'a de sens que si la promesse attendue est indépendante des lignes situées en dessous d'elle dans la fonction. Si ce n'est pas le cas, comme c'est souvent le cas, tu peux tout aussi bien exécuter ton code d'apparence synchrone ligne par ligne sur son chemin d'exécution asynchrone.

    Exemples d'utilisation de Async Await dans la programmation Javascript du monde réel

    Async/Await est très répandu dans la programmation JavaScript du monde réel pour gérer les opérations asynchrones. Voici un exemple de la façon dont tu peux récupérer des données à partir d'une API en utilisant Async Await.

    async function fetchUsers() { try { const response = await fetch('https://api.github.com/users') ; const data = await response.json() ; console.log(data) ; } catch (error) { console.log(error) ; } } fetchUsers() ;
    Ici, la fonction fetchUsers est déclarée asynchrone. À l'intérieur, la méthode fetch de l'API Fetch est appelée avec "await". Cela met la fonction en pause à ce moment-là jusqu'à ce que la Promesse issue de l'appel fetch soit résolue ou rejetée. Une fois que la promesse est renvoyée, l'exécution de la fonction reprend et la réponse de l'appel fetch est stockée. Immédiatement après, 'await' est placé devant response.json(), qui est une autre méthode renvoyant une promesse. L'exécution de la fonction fetchUsers est à nouveau mise en pause jusqu'à ce que cette promesse soit réglée. Les données de la réponse sont stockées et enregistrées sur la console. S'il y a une erreur à une étape de la fonction, le bloc catch sera exécuté, affichant l'erreur sur la console. Cette technique puissante améliore la capacité du langage JavaScript à gérer l'asynchronisme du monde réel, principalement observé dans le développement Web moderne, comme les opérations d'E/S, les animations, les minuteries, la récupération de données à partir d'API, et bien plus encore. Lorsqu'il s'agit de gérer des opérations asynchrones, Async/Await est devenu un outil indispensable pour tout développeur JavaScript.

    Plonger au cœur de la fonction asynchrone en Javascript

    Javascript Async ou Asynchronous JavaScript est une méthodologie axée sur l'amélioration de l'expérience utilisateur en permettant à certains morceaux de code de s'exécuter indépendamment sans affecter les performances globales de la page web.

    La technicité de la fonction asynchrone en Javascript

    Découvrons plus en détail les aspects techniques des fonctions asynchrones en JavaScript. Les fonctions asynchrones permettent d'écrire du code asynchrone basé sur des promesses, comme s'il était synchrone, mais sans bloquer le fil d'exécution. Elles sont définies à l'aide du mot-clé "async". Les fonctions asynchrones peuvent contenir zéro ou plusieurs expressions "await". Une expression 'await' provoque une pause dans la fonction asynchrone et attend la résolution de la promesse, puis reprend la fonction asynchrone et renvoie la valeur résolue.

    Syntaxe : \[ \N-texte{{nom de la fonction asynchrone() \N }] \N-texte{{// code }} \N-texte{{\N }} \N-texte{\N }} \N-texte{\N }} \N-texte{\N} \N-texte{\N } }]

    Voici un exemple de fonction asynchrone :
    async function f() { let promise = new Promise((resolve, reject) => { setTimeout(() => resolve("done !"), 1000) }) ; let result = await promise ; // l'exécution de la fonction s'interrompt ici jusqu'à ce que la promesse soit résolue* alert(result) ; // "done !" } f() ;
    La fonction asynchrone "f()" renvoie une promesse. L'exécution de la fonction, mise en pause à "await promise", reprend lorsque la promesse se résout, le résultat de la promesse devenant le résultat de "await", et est alors restitué par l'alerte. Cette fonction ne bloque pas l'unité centrale, mais lui permet plutôt d'effectuer d'autres tâches, comme répondre aux actions de l'utilisateur.

    Différentes techniques d'asynchronisme en Javascript : Un examen plus approfondi

    Il existe différentes techniques pour gérer la programmation asynchrone en JavaScript. Ces techniques permettent à JavaScript, qui est par nature un langage à un seul thread, de gérer les opérations asynchrones. Les principales techniques sont les suivantes :
    • les rappels
    • Les promesses
    • Les générateurs
    • Async/Await
    Les rappels sont la technique la plus simple, où une fonction est transmise en tant qu'argument à une autre fonction et est exécutée une fois que la fonction parente s'est terminée. Les promesses sont plus sophistiquées et peuvent gérer des scénarios asynchrones plus complexes. En JavaScript, une promesse représente une valeur qui n'est peut-être pas encore disponible mais qui sera résolue à un moment donné dans le futur, sinon elle sera rejetée. Les générateurs, introduits avec ES6, sont allés un peu plus loin. Il s'agit de fonctions spéciales qui peuvent être quittées et réintroduites plus tard, le contexte (les liaisons de variables) étant sauvegardé lors des réintroductions. Combinés aux promesses, les générateurs peuvent offrir une technique d'apparence synchrone pour gérer le code asynchrone. L'introduction de async/await avec ES2017 a encore simplifié la programmation asynchrone. Ces mots-clés nous permettent d'écrire du code asynchrone basé sur des promesses qui ressemble et se comporte comme du code synchrone, ce qui améliore la lisibilité et la maintenabilité. Il est essentiel de comprendre que toutes ces techniques ont des scénarios où elles sont les plus adaptées. Un développeur Javascript efficace connaît généralement toutes ces techniques et sait les appliquer de manière réfléchie pour s'adapter à n'importe quelle situation de programmation donnée.

    Exemples pratiques de l'asynchronisme en JavaScript

    Comprendre l'asynchronisme en JavaScript ne nécessite pas seulement la compréhension de concepts théoriques, mais exige aussi de se familiariser avec des applications pratiques. Async, la pierre angulaire de la programmation asynchrone en JavaScript, est mise en œuvre par le biais d'API, de temporisateurs et de gestionnaires d'événements, pour n'en citer que quelques-uns.

    Études de cas : Comment l'asynchronisme est mis en œuvre en JavaScript

    L'objectif principal de la programmation asynchrone en JavaScript est de gérer efficacement les tâches qui prennent du temps sans bloquer le fil d'exécution principal. Cela permet aux utilisateurs de bénéficier d'une interface ininterrompue, améliorant ainsi l'expérience utilisateur. Un exemple pragmatique de ce principe serait d'imaginer un formulaire HTML qui recueille les commentaires de l'utilisateur. Lorsque l'utilisateur soumet ses commentaires, le serveur peut mettre plusieurs secondes à traiter et à stocker ces informations ; si cela est fait de manière synchrone, l'interface utilisateur ne répond plus. En utilisant JavaScript Async, l'interface utilisateur reste active et capable d'accepter d'autres entrées pendant que les commentaires sont traités. Un autre exemple pertinent de JavaScript asynchrone serait l'accès aux API et leur manipulation. Prends l'exemple d'une page de galerie d'un site Web où chaque photo est récupérée par l'intermédiaire d'une API. Si la programmation synchrone est utilisée, chaque image devra être récupérée et chargée complètement avant de récupérer l'image suivante. Cela pourrait entraîner un temps de chargement excessivement long. L'implémentation de JavaScript Async permet de traiter chaque appel API séparément, ce qui permet aux images de se charger simultanément, améliorant ainsi considérablement le temps de chargement des pages.

      async function getData() { let response = await fetch('https://api.example.com/images') ; let data = await response.json() ; return data ; } async function renderImages() { let images = await getData() ; images.forEach(img => { let imgElement = document.createElement('img') ; imgElement.src = img.url ; document.body.appendChild(imgElement) ; }) ; } renderImages() ;
    L'exemple ci-dessus montre comment l'asynchronisme permet de récupérer et d'afficher des images à partir d'une API externe.

    Découvrir la nature asynchrone de JavaScript à l'aide d'exemples

    Partie inhérente de JavaScript, la programmation asynchrone démontre son besoin et son potentiel de nombreuses façons à travers diverses facettes du développement Web. Prends l'exemple d'une plateforme d'achat en ligne qui permet aux utilisateurs d'ajouter des articles à leur panier. Lorsqu'un utilisateur ajoute un article à son panier, il faut quelques instants au serveur pour confirmer l'action. Ici, Async JavaScript permet aux utilisateurs de poursuivre leurs achats, en parcourant les descriptions des articles pendant que le serveur traite la mise à jour du panier en arrière-plan. Dans un autre scénario courant, considérons un site Web d'actualités qui affiche les prévisions météorologiques. Les données météorologiques sont généralement récupérées à partir d'une API externe. Grâce à Async JavaScript, cette tâche est gérée de manière asynchrone. Ainsi, l'utilisateur n'a pas à attendre que les données météorologiques soient chargées avant de pouvoir lire d'autres nouvelles. Une autre mise en œuvre d'Async est observée dans la gestion des événements des utilisateurs. Prenons l'exemple d'un site Web doté d'un bouton "Charger plus" qui permet d'afficher plus de contenu à l'utilisateur. Ici, lorsqu'un utilisateur clique sur le bouton, JavaScript ne met pas en pause l'ensemble du site Web pour aller chercher et afficher le nouveau contenu. Il gère ce processus de manière asynchrone, ce qui permet de maintenir l'interactivité du site Web pendant le chargement du nouveau contenu. Dans chacun des scénarios ci-dessus, Async se distingue en détachant les actions chronophages du fil d'exécution principal, ce qui garantit que l'interface utilisateur reste réactive. C'est là tout le charme et la puissance de l'asynchronisme en JavaScript. En mettant l'accent sur l'expérience utilisateur et l'efficacité, Async a trouvé son application dans la plupart des facettes du développement web progressif. Il est donc essentiel de faire preuve d'ingéniosité avec Async pour maîtriser JavaScript et s'aventurer dans le développement Web de haut niveau.

    Techniques d'asynchronisme en JavaScript

    La programmation asynchrone en JavaScript, communément appelée Async, est la méthodologie qui permet d'exécuter des parties d'un programme indépendamment des autres. L'asynchronisme est d'une importance capitale en JavaScript, un langage monotâche, où le risque potentiel de blocage des tâches pendant les attentes pourrait s'avérer gênant.

    Vue d'ensemble des techniques de programmation asynchrone en JavaScript

    Une multitude de techniques accueillent la mise en œuvre de la programmation asynchrone en Javascript. Parmi celles-ci, les plus importantes sont les "rappels", les "promesses", les "générateurs" et "Async/await". - Rappels: La plus simple des techniques asynchrones, un rappel est essentiellement une fonction transmise en tant qu'argument à une autre fonction, et qui est exécutée après que la fonction mère ait terminé son exécution. Considérées comme le principal moyen traditionnel de JavaScript pour gérer les opérations asynchrones, les callbacks ont été supplantées par des approches plus modernes en raison de leur difficulté à assurer la maintenance et de leur complexité accrue, un problème souvent appelé "l'enfer des callbacks". - Promesses: Introduites dans ES6, les promesses sont une amélioration significative des callbacks pour gérer les opérations asynchrones. Une promesse signifie un événement futur probable, un mécanisme qui promet de revenir avec une réponse dans le futur. Les promesses ont deux résultats : "fulfilled", ce qui signifie que l'opération a réussi, ou "rejected", ce qui indique que l'opération n'a pas abouti. Les promesses sont thenables, c'est-à-dire qu'elles possèdent une méthode '.then'. Cependant, les promesses, comme les callbacks, présentent une complexité croissante avec l'augmentation des appels asynchrones synchronisés - un problème populairement appelé "l'enfer du then-callback". - Générateurs: Introduits dans ES6, les générateurs sont une avancée par rapport aux promesses. Les générateurs peuvent interrompre leur exécution en cours de route et reprendre là où elle s'est arrêtée, ce qui donne l'impression d'un comportement synchrone tout en étant non bloquant. - Async/await: Introduit dans ES8, Async/await est un sucre syntaxique construit sur les promesses, permettant de profiter des avantages d'un comportement asynchrone tout en écrivant un code d'apparence synchrone. Tout en étant l'approche la plus simplifiée, la plus directe et la plus largement utilisée, Async/await traite efficacement les opérations asynchrones en JavaScript.

    L'impact des techniques asynchrones sur la programmation en JavaScript

    Le rôle de l'asynchronisme dans la programmation JavaScript est indéniable. Il améliore l'expérience de l'utilisateur en facilitant une utilisation ininterrompue et permet de traiter efficacement plusieurs opérations simultanément. Se doter d'une compréhension et d'une compétence dans le déploiement de ces techniques peut considérablement influencer le traitement de divers scénarios de programmation. - Les callbacks étaient la principale méthode pour gérer les opérations asynchrones en JavaScript, mais ils souffraient de problèmes tels que l'inversion du contrôle et la propagation des erreurs. Alors que des sociétés comme Node.js utilisaient largement les callbacks dans leurs API, les callbacks sont tombés en désuétude en raison de l'introduction des promesses - Les promesses ont apporté de nombreux avantages par rapport aux callbacks, comme une meilleure gestion des erreurs et des valeurs de retour. Elles permettent l'enchaînement d'opérations asynchrones dans une approche mieux gérée et moins sujette aux erreurs que les callbacks - Les générateurs, combinés aux promesses, signifient que les développeurs Javascript peuvent désormais écrire du code asynchrone qui peut faire une pause et reprendre, faisant en sorte que leur code ait l'air et se comporte comme s'il était synchrone, mais sans bloquer le fil principal - Avec Async/await, la complexité a été réduite de façon spectaculaire. Grâce à la fonctionnalité Async/await, le code asynchrone semble être synchrone, mais avec les avantages d'une exécution non bloquante. Aujourd'hui, Async/await est largement préféré aux autres techniques de programmation asynchrone en JavaScript en raison de sa simplicité et de son intuitivité. Il est essentiel de comprendre ces techniques asynchrones, car elles constituent la base d'opérations plus complexes en JavaScript, telles que les requêtes réseau, l'accès aux systèmes de fichiers et les minuteries. Une base solide dans ces techniques peut t'équiper pour écrire des applications JavaScript plus efficaces et plus conviviales.

    Javascript Async - Principaux enseignements

    • Javascript Async : Une méthodologie Javascript axée sur l'amélioration de l'expérience utilisateur en permettant à certaines parties d'un code de s'exécuter indépendamment sans affecter les performances globales d'un site Web.
    • Async/Await : introduits dans ES2017, ces mots-clés simplifient le processus de traitement du code asynchrone en JavaScript.
    • Promesses : Ce terme représente une valeur qui n'est peut-être pas encore disponible mais qui sera résolue à un moment donné dans le futur, ou qui sera rejetée. Elles améliorent la gestion des scénarios asynchrones complexes.
    • Callbacks:: Cette technique consiste à passer une fonction comme argument à une autre fonction, et elle est exécutée une fois que la fonction parente a terminé son exécution. L'approche est simple mais peut conduire à une maintenabilité difficile lorsqu'il s'agit d'opérations asynchrones complexes.
    • Générateurs:: Introduits dans ES6, ce sont des fonctions spéciales qui peuvent être quittées et réintroduites, leur contexte étant sauvegardé d'une entrée à l'autre. Lorsqu'ils sont combinés avec des promesses, ils offrent une technique d'apparence synchrone pour gérer le code asynchrone.
    Apprends plus vite avec les 15 fiches sur Javascript Asynchrone

    Inscris-toi gratuitement pour accéder à toutes nos fiches.

    Javascript Asynchrone
    Questions fréquemment posées en Javascript Asynchrone
    Qu'est-ce que la programmation asynchrone en JavaScript?
    La programmation asynchrone permet à JavaScript d'exécuter des tâches sans bloquer le fil d'exécution principal. Elle utilise des fonctions comme les callbacks, les promesses et async/await.
    Comment fonctionnent les promesses en JavaScript?
    Les promesses représentent une opération asynchrone qui peut être complétée (résolue) ou échouer (rejetée). Elles améliorent la gestion des callbacks imbriqués.
    Pourquoi utiliser async/await en JavaScript?
    L'utilisation de async/await simplifie le code asynchrone, le rendant plus lisible et gérable. Cela permet d'écrire du code async de manière synchrone.
    Quelle est la différence entre setTimeout et setInterval?
    setTimeout exécute une fonction après un délai spécifié. setInterval exécute une fonction à intervalles réguliers. Les deux sont utilisés pour des opérations asynchrones.
    Sauvegarder l'explication

    Teste tes connaissances avec des questions à choix multiples

    Que signifie le terme "asynchrone" en informatique et comment s'applique-t-il à JavaScript ?

    Quels sont les exemples de fonctions JavaScript qui utilisent le concept asynchrone ?

    Comment JavaScript met-il en œuvre la fonctionnalité Async ?

    Suivant

    Découvre des matériels d'apprentissage avec l'application gratuite StudySmarter

    Lance-toi dans tes études
    1
    À propos de StudySmarter

    StudySmarter est une entreprise de technologie éducative mondialement reconnue, offrant une plateforme d'apprentissage holistique conçue pour les étudiants de tous âges et de tous niveaux éducatifs. Notre plateforme fournit un soutien à l'apprentissage pour une large gamme de sujets, y compris les STEM, les sciences sociales et les langues, et aide également les étudiants à réussir divers tests et examens dans le monde entier, tels que le GCSE, le A Level, le SAT, l'ACT, l'Abitur, et plus encore. Nous proposons une bibliothèque étendue de matériels d'apprentissage, y compris des flashcards interactives, des solutions de manuels scolaires complètes et des explications détaillées. La technologie de pointe et les outils que nous fournissons aident les étudiants à créer leurs propres matériels d'apprentissage. Le contenu de StudySmarter est non seulement vérifié par des experts, mais également régulièrement mis à jour pour garantir l'exactitude et la pertinence.

    En savoir plus
    Équipe éditoriale StudySmarter

    Équipe enseignants Informatique

    • Temps de lecture: 20 minutes
    • Vérifié par l'équipe éditoriale StudySmarter
    Sauvegarder l'explication Sauvegarder l'explication

    Sauvegarder l'explication

    Inscris-toi gratuitement

    Inscris-toi gratuitement et commence à réviser !

    Rejoins plus de 22 millions d'étudiants qui apprennent avec notre appli StudySmarter !

    La première appli d'apprentissage qui a réunit vraiment tout ce dont tu as besoin pour réussir tes examens.

    • Fiches & Quiz
    • Assistant virtuel basé sur l’IA
    • Planificateur d'étude
    • Examens blancs
    • Prise de notes intelligente
    Rejoins plus de 22 millions d'étudiants qui apprennent avec notre appli StudySmarter !