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

Comment suspendre gracieusement l'exécution jusqu'à la fin d'une fonction asynchrone ?

Mary-Kate Olsen
Libérer: 2024-10-28 06:33:02
original
623 Les gens l'ont consulté

How to Gracefully Pause Execution Until an Asynchronous Function Completes?

Une manière appropriée de suspendre l'exécution jusqu'à ce qu'une fonction soit terminée

Lorsque vous travaillez avec plusieurs fonctions asynchrones, il est souvent nécessaire d'attendre la fin d'une fonction avant d'en exécuter une autre. Examinons une solution et explorons des approches plus élégantes.

Solution originale

La solution fournie utilise un mécanisme d'interrogation avec setTimeout pour vérifier en permanence si la première fonction est terminée :

<code class="javascript">var isPaused = false;

function firstFunction() {
    isPaused = true;
    // Do something
    isPaused = false;
}

function secondFunction() {
    firstFunction();
    function waitForIt() {
        if (isPaused) {
            setTimeout(waitForIt, 100);
        } else {
            // Do something else
        }
    }
}</code>
Copier après la connexion

Bien que cette méthode puisse fonctionner, elle n'est pas optimale en raison de sa dépendance aux sondages.

Approches élégantes

Fonctions de rappel :

Une pratique courante consiste à utiliser des fonctions de rappel pour gérer l'achèvement asynchrone :

<code class="javascript">function firstFunction(callback) {
    // Do asynchronous work
    callback();
}

function secondFunction() {
    firstFunction(() => {
        console.log("huzzah, I'm done!");
    });
}</code>
Copier après la connexion

Lorsque firstFunction se termine, il appelle la fonction de rappel, permettant à secondFunction de continuer à s'exécuter.

Fonctions fléchées :

L'utilisation des fonctions fléchées simplifie cette approche :

<code class="javascript">firstFunction(() => console.log('huzzah, I'm done!'))</code>
Copier après la connexion

Async/Await :

Dans le JavaScript moderne, async/await offre un format plus lisible et moyen efficace de suspendre l'exécution :

<code class="javascript">const secondFunction = async () => {
  const result = await firstFunction()
  // Do something else here after firstFunction completes
}</code>
Copier après la connexion

Conclusion

Bien que l'interrogation puisse être utilisée pour attendre l'achèvement d'une fonction, les fonctions de rappel, les fonctions fléchées et async/await fournissent des solutions plus élégantes et plus performantes. Choisissez l'approche qui correspond le mieux à vos besoins spécifiques et à votre environnement JavaScript.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!