Maison > interface Web > js tutoriel > le corps du texte

Comment implémenter une fonction d'attente en JavaScript pour les tâches asynchrones ?

Patricia Arquette
Libérer: 2024-10-26 03:02:27
original
172 Les gens l'ont consulté

How to Implement a Wait Function in JavaScript for Asynchronous Tasks?

Délais de synchronisation en JavaScript

Comprendre les délais de synchronisation en JavaScript est crucial pour créer des applications Web réactives et efficaces. Dans cet article, nous aborderons le problème de l'attente d'une heure précise avant d'exécuter une ligne de code.

Le problème :

Un développeur JavaScript novice a rencontré un problème où une fonction n'attend pas comme prévu avant d'évaluer une condition. Le comportement attendu est d'attendre 5 secondes avant de vérifier si un certain état a changé. Cependant, la fonction actuelle vérifie immédiatement au lieu d'attendre.

La solution :

Pour obtenir ce comportement souhaité, nous pouvons utiliser les approches suivantes :

Navigateur :

En utilisant la syntaxe async/await moderne (disponible dans les navigateurs prenant en charge ECMAScript 6 et supérieur), nous pouvons utiliser la solution suivante :

<code class="javascript">const delay = ms => new Promise(res => setTimeout(res, ms));

async function yourFunction() {
  await delay(5000);
  console.log("Waited 5s");

  await delay(5000);
  console.log("Waited an additional 5s");
}</code>
Copier après la connexion

Cette approche simplifie le code en le faisant apparaître synchrone, malgré une exécution asynchrone.

Node.js :

Pour Node.js version 16 et supérieure, nous pouvons exploiter le Fonction setTimeout intégrée basée sur la promesse :

<code class="javascript">import { setTimeout } from "timers/promises";

async function yourFunction() {
  await setTimeout(5000);
  console.log("Waited 5s");

  await setTimeout(5000);
  console.log("Waited an additional 5s");
}</code>
Copier après la connexion

Attention :

Il est important de noter que l'utilisation d'une fonction de retard pour éviter les conditions de concurrence (en particulier lors des tests asynchrones code) doit être fait avec prudence, car cela peut souvent conduire à des solutions sous-optimales.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal