Maison > interface Web > js tutoriel > Comment puis-je obtenir un code véritablement non bloquant dans Node.js ?

Comment puis-je obtenir un code véritablement non bloquant dans Node.js ?

DDD
Libérer: 2024-12-11 12:18:19
original
451 Les gens l'ont consulté

How Can I Achieve Truly Non-Blocking Code in Node.js?

Méthode correcte pour obtenir du code non bloquant dans Node.js

Dans la programmation asynchrone, les fonctions non bloquantes permettent à d'autres codes de s'exécuter simultanément sans attendre leur achèvement. Cependant, le simple fait d'envelopper le code dans une promesse, comme dans l'exemple ci-dessous, ne le rend pas véritablement non bloquant.

function longRunningFunc(val, mod) {
    return new Promise((resolve, reject) => {
        sum = 0;
        for (var i = 0; i < 100000; i++) {
            for (var j = 0; j < val; j++) {
                sum += i + j % mod
            }
        }
        resolve(sum)
    })
}
Copier après la connexion

Malgré l'emballage du code dans une promesse, le programme attend avant d'imprimer, indiquant que le le code bloque.

Comprendre le code non bloquant

Dans Node.js, Le code JavaScript simple est intrinsèquement bloquant et s'exécute dans un seul thread. Aucune quantité d'encapsulation dans les promesses ou les API asynchrones ne peut le rendre non bloquant. Pour obtenir un comportement non bloquant, il faut utiliser des techniques qui déplacent l'exécution du code vers des threads externes ou adopter des API Node.js expérimentales pour les threads.

Obtenir un code non bloquant

Voici quelques façons de créer un véritable code non bloquant dans Node.js :

  • Processus enfants : Exécutez le code dans un processus enfant distinct et accédez aux résultats de manière asynchrone.
  • Worker Threads (Node.js v11 ): Utilisez la fonctionnalité expérimentale Worker Threads pour créer des threads de travail séparés parallèles au principal thread.
  • Modules complémentaires de code natif : Écrivez des extensions de code natif à l'aide du mécanisme complémentaire de Node.js et utilisez des threads libuv ou des threads au niveau du système d'exploitation.
  • API asynchrones : s'appuient sur des API asynchrones existantes sans prolonger l'exécution du code dans l'ensemble thread.

En mettant en œuvre des techniques non bloquantes, les applications Node.js peuvent gérer efficacement les opérations de longue durée sans gêner l'exécution d'autres codes, ce qui se traduit par une réactivité et une concurrence améliorées.

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