Maison  >  Article  >  interface Web  >  Nodejs réalise la synchronisation

Nodejs réalise la synchronisation

WBOY
WBOYoriginal
2023-05-27 21:26:06730parcourir

Node.js est un environnement d'exécution JavaScript back-end très populaire qui peut être utilisé pour écrire des applications côté serveur hautes performances et à haute concurrence. Bien que Node.js dispose de nombreuses fonctionnalités de programmation asynchrone puissantes, dans certains cas, la programmation synchrone peut être plus adaptée à des scénarios et à des besoins spécifiques.

  1. Qu'est-ce que la programmation synchrone ?

La programmation synchrone signifie que l'exécution du programme s'effectue dans un certain ordre. L'exécution du code est bloquée, et le code attendra toujours la fin de certaines opérations. Lorsqu'il rencontre une opération d'E/S ou une demande réseau, le programme doit attendre la fin de l'opération avant de continuer. Dans une application Node.js monothread, si une opération est bloquée, les performances de l'ensemble de l'application peuvent être affectées. Par conséquent, lors de l’écriture d’applications Node.js, la programmation asynchrone est souvent adoptée pour éviter le blocage.

  1. Avantages de la programmation asynchrone

Le principal avantage de la programmation asynchrone est qu'elle peut améliorer les performances et l'évolutivité du programme. Le code asynchrone pouvant s'exécuter en parallèle, plusieurs requêtes peuvent être traitées en même temps ou plusieurs tâches peuvent être exécutées simultanément, réduisant ainsi le temps d'attente et les blocages.

Un autre avantage important de la programmation asynchrone est qu'elle peut éviter les problèmes de synchronisation des threads causés par la programmation multi-thread. Dans la programmation multithread, la concurrence entre les threads peut entraîner des problèmes de synchronisation entre les threads, ce qui rend les programmes complexes et difficiles à déboguer. Puisque Node.js est monothread, les problèmes de concurrence et de synchronisation entre les threads sont réduits.

  1. Scénarios applicables pour la programmation synchrone

Bien que la programmation asynchrone soit un meilleur choix dans la plupart des cas, il existe certains scénarios, la programmation synchrone peut être plus approprié. Voici quelques scénarios adaptés à la programmation synchrone :

(1) Le programme doit effectuer plusieurs opérations de manière ordonnée.

(2) Le programme doit attendre la fin de certaines opérations avant d'exécuter l'étape suivante.

(3) Le programme doit obtenir les résultats de plusieurs opérations simultanément.

(4) Le programme doit traiter un grand nombre d'opérations de calcul plutôt que des opérations d'E/S.

(5) Le programme doit garantir l'intégrité des données et du statut.

Dans ces cas, la programmation synchrone peut rendre le code plus facile à comprendre et à déboguer, et peut rendre l'écriture du code moins difficile.

  1. Programmation synchrone dans Node.js

Bien que Node.js soit le choix principal pour la programmation asynchrone, Node.js fournit également certains mécanismes pour une programmation synchrone. Voici quelques méthodes pour implémenter la programmation synchrone dans Node.js :

(1) Lecture de fichier synchrone

Dans Node.js, vous pouvez utiliser la lecture synchrone de fichier, fichier synchrone la lecture peut être réalisée en utilisant la méthode fs.readFileSync(). Cette méthode bloquera l'exécution du programme avant la fin de la lecture du fichier, puis poursuivra l'exécution jusqu'à ce que la lecture du fichier soit terminée.

Ce qui suit est un simple script Node.js utilisé pour lire un fichier texte et imprimer le contenu du fichier :

const fs = require('fs');

const data = fs.readFileSync('file.txt', 'utf-8');

console.log(data);

Le code ci-dessus utilise la lecture synchrone du chemin du fichier, il bloque l'exécution du programme jusqu'à ce que la lecture du fichier soit terminée et enregistre le contenu du fichier dans les données variables. Ensuite, le programme imprimera les données.

(2) Exécution du code de blocage synchrone

Dans Node.js, vous pouvez utiliser la fonction setInterval() pour effectuer une opération à un intervalle de temps fixe. Cependant, la fonction setInterval() est asynchrone et démarre un minuteur pour effectuer certaines opérations.

Si vous souhaitez que l'exécution du programme Node.js soit suspendue pendant un certain temps, vous pouvez utiliser le code suivant :

function sleep(ms) {
  const start = new Date().getTime();
  while (new Date().getTime() < start + ms);
}

console.log('start');
sleep(5000);
console.log('end');

Le code ci-dessus provoquera le Node. js pour suspendre l'exécution pendant 5 secondes avant de continuer à exécuter le code suivant. Ce code utilise une fonction de veille qui bloque l'exécution du programme pendant une période de temps spécifiée.

(3) Exécution de code de blocage synchrone (Promise)

Dans Node.js, nous pouvons également utiliser Promise pour implémenter l'exécution de code de blocage synchrone. Voici un exemple :

function sleep(ms) {
  return new Promise(resolve => {
    setTimeout(resolve, ms);
  });
}

async function run() {
  console.log('start');
  await sleep(5000);
  console.log('end');
}

run();

Le code ci-dessus utilise deux fonctions. La première fonction sleep() renverra un objet Promise, qui exécutera la fonction de rappel solve() dans le délai spécifié. La deuxième fonction run() est une fonction asynchrone qui attend que l'objet Promise termine son exécution pendant wait sleep().

  1. Summary

Bien que Node.js soit le choix principal pour la programmation asynchrone, il existe certains scénarios dans lesquels la programmation synchrone peut être plus adaptée et nécessite . Par exemple, le programme doit effectuer plusieurs opérations de manière ordonnée ou doit attendre la fin de certaines opérations avant de passer à l'étape suivante. Node.js fournit certains mécanismes de programmation synchrone, tels que la lecture synchrone de fichiers, l'exécution synchrone de code bloquant, l'exécution synchrone de code bloquant (Promesse), etc. Lors de l'écriture d'applications Node.js, vous devez choisir une programmation asynchrone ou synchrone en fonction du scénario spécifique pour obtenir les meilleures performances et évolutivité.

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!

Déclaration:
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