Maison > interface Web > js tutoriel > Les fonctions JavaScript asynchrones peuvent-elles être forcées à s'exécuter de manière synchrone ?

Les fonctions JavaScript asynchrones peuvent-elles être forcées à s'exécuter de manière synchrone ?

DDD
Libérer: 2024-12-03 03:24:10
original
684 Les gens l'ont consulté

Can Asynchronous JavaScript Functions Be Forced to Execute Synchronously?

Les fonctions Javascript asynchrones peuvent-elles être appelées de manière synchrone ?

Bien que la programmation asynchrone soit courante en Javascript, des scénarios spécifiques peuvent nécessiter des appels de fonction synchrones pour les fonctions synchrones existantes. bases de code. Bien que l'on reconnaisse la nature sous-optimale de cette approche, il peut être nécessaire d'adapter les appels asynchrones à une base de code synchrone plus grande en raison de contraintes de temps.

Bloquer les fonctions de rappel

Le défi consiste à bloquer l'exécution de la fonction appelante jusqu'à ce que le rappel de la fonction asynchrone soit reçu. Les considérations clés incluent :

  • Impossibilité de bloquer l'interface utilisateur : Le blocage du moteur d'exécution Javascript gèlera inévitablement l'expérience de l'interface utilisateur.
  • Interrogation des variables globales : Une approche alternative consiste à interroger une variable globale définie par le rappel dans la fonction appelante. Ceci peut être réalisé à l'aide d'un minuteur d'intervalle, en vérifiant à plusieurs reprises jusqu'à ce que la variable globale soit renseignée.

Exemple de mise en œuvre :

function doSomething() {
  var data;

  function callBack(d) {
    window.data = d;
  }

  myAsynchronousCall(param1, callBack);

  // Start polling
  var intvl = setInterval(function() {
    if (window.data) {
      clearInterval(intvl);
      console.log(data);
    }
  }, 100);
}
Copier après la connexion

Refactoring pour Conformité asynchrone :

Cependant, il convient de noter que l'approche idéale reste de modifier la fonction appelante et passez un rappel pour gérer l’opération asynchrone. Cela maintient l'intégrité asynchrone sans sacrifier la fonctionnalité de base de code synchrone.

function doSomething(func) {
  function callBack(d) {
    func(d);
  }

  myAsynchronousCall(param1, callBack);
}

doSomething(function(data) {
  console.log(data);
});
Copier après la connexion

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal