Maison interface Web js tutoriel Un simple gestionnaire d'opérations asynchrones Node.js, compétences Sharing_Javascript

Un simple gestionnaire d'opérations asynchrones Node.js, compétences Sharing_Javascript

May 16, 2016 pm 04:50 PM
node.js 异步

J'ai beaucoup écrit sur nodejs récemment. J'ai rencontré moins d'opérations asynchrones au début car ce que je voulais faire était relativement simple, j'ai vérifié l'API et j'ai découvert qu'il y en avait une synchrone. J'ai juste utilisé la version synchrone. Petit à petit, j'ai découvert que ce n'était pas un problème. Nous n'avons pas besoin des bonnes fonctionnalités asynchrones, mais nous devons utiliser des fonctionnalités synchrones. C'est vraiment embarrassant et beaucoup de choses n'ont pas d'API synchrones.

D'accord ! En écrivant de manière asynchrone, ce type de code est progressivement apparu. . .

Copier le code Le code est le suivant :

mysql.query('xxxx'). on('succès', function(){
mysql.query('xxxx').on('succès', function(){
mysql.query('xxxx').on('succès', function() {
mysql.query('xxxx').on('succès', function(){
mysql.query('xxxx').on('succès', function(){
mysql. query('xxxx').on('success', function(){
                                                                                                 });
});
});
});

Eh bien, vous avez également vu à quel point le code sera laid s'il continue comme ça. Il ressemblera à un chausson de vieille dame, donc le gestionnaire d'opérations asynchrones suivant est généré, Petit et exquis, hehe, c'est certainement suffisant. code, parlons-en avec le code. Mettez simplement en surbrillance le code, tel que :
TODO : Pas assez complet, par exemple, les erreurs ne sont pas gérées


Copier le code Le code est le suivant :

/*
* Async Manager
* auteur : jser.me
*
* Utilisation :
* var asyncMg = require('./AsyncManager') ;
* asyncMg
* .push(function(next){
* some_aysnc_method().on('success'{
* next();
*                                                                                                  suivant( );
* })
* })
* .push( ... )
* .run() //Exécuter
* .on('succès', function() {
* allThings_is_down();
*    });
function typeOf( obj ){
return Object.prototype.toString.call( obj ).match(/[object ([^]]*)]/)[1];
}

fonction AsyncManager( arg ){
this.execArrys = [];
this.push( arg );
}
//Utilisez la méthode d'héritage fournie par le système

require('util').inherits( AsyncManager, require('events').EventEmitter );

//Marquer le nombre de fonctions exécutées avec succès

AsyncManager.prototype.succCount = 0;



//Ajouter
AsyncManager.prototype.push = function( arg ) {

var This = this;
if( typeOf(arg) == 'Array' ){

arg.forEach( function(v,i){

This.execArrys.push( v );
          });

                                                                                .

//Exécuter
AsyncManager.prototype.run = function(){
var self = this;

If( this.succCount == this.execArrys.length ) {
//Les événements sont déclenchés une fois que toutes les fonctions ont été exécutées avec succès
this.emit( ​​​​​​'success' );
} else {
this.execArrys[ this.succCount ]( self.run.bind( self ) );
}

this.succCount ;

return this; //Chaîne un

};

exports = module.exports = function( arg ){

return new AsyncManager( arg );
}



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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Un article pour parler du contrôle de la mémoire dans Node Un article pour parler du contrôle de la mémoire dans Node Apr 26, 2023 pm 05:37 PM

Le service Node construit sur une base non bloquante et piloté par les événements présente l'avantage d'une faible consommation de mémoire et est très adapté à la gestion de requêtes réseau massives. Dans le contexte de demandes massives, les questions liées au « contrôle de la mémoire » doivent être prises en compte. 1. Le mécanisme de récupération de place du V8 et les limitations de mémoire Js sont contrôlés par la machine de récupération de place

Application rapide : analyse de cas de développement pratique du téléchargement HTTP asynchrone PHP de plusieurs fichiers Application rapide : analyse de cas de développement pratique du téléchargement HTTP asynchrone PHP de plusieurs fichiers Sep 12, 2023 pm 01:15 PM

Application rapide : analyse de cas de développement pratique de PHP Téléchargement HTTP asynchrone de plusieurs fichiers Avec le développement d'Internet, la fonction de téléchargement de fichiers est devenue l'un des besoins fondamentaux de nombreux sites Web et applications. Pour les scénarios dans lesquels plusieurs fichiers doivent être téléchargés en même temps, la méthode de téléchargement synchrone traditionnelle est souvent inefficace et prend du temps. Pour cette raison, utiliser PHP pour télécharger plusieurs fichiers de manière asynchrone via HTTP est devenu une solution de plus en plus courante. Cet article analysera en détail comment utiliser le HTTP asynchrone PHP à travers un cas de développement réel.

En savoir plus sur les tampons dans Node En savoir plus sur les tampons dans Node Apr 25, 2023 pm 07:49 PM

Au début, JS ne fonctionnait que du côté du navigateur. Il était facile de traiter les chaînes codées en Unicode, mais il était difficile de traiter les chaînes binaires et non codées en Unicode. Et le binaire est le format de données le plus bas du package ordinateur, vidéo/audio/programme/réseau.

Comment Swoole prend en charge les opérations SMTP asynchrones Comment Swoole prend en charge les opérations SMTP asynchrones Jun 25, 2023 pm 12:24 PM

Avec le développement et la vulgarisation continus d'Internet, le courrier électronique est devenu un élément indispensable de la vie et du travail des gens, et SMTP (Simple Mail Transfer Protocol) est l'un des protocoles importants pour l'envoi de courrier électronique. En tant que framework de communication réseau asynchrone pour PHP, Swoole peut bien prendre en charge les opérations SMTP asynchrones, rendant l'envoi d'e-mails plus efficace et plus stable. Cet article présentera comment Swoole prend en charge les opérations SMTP asynchrones, notamment l'utilisation

Comment Swoole prend en charge les opérations AMQP asynchrones Comment Swoole prend en charge les opérations AMQP asynchrones Jun 25, 2023 am 08:22 AM

À mesure que le volume des activités Internet continue de croître, la demande de haute concurrence et de hautes performances augmente de plus en plus, et Swoole, en tant que cadre de communication réseau pour PHP, est de plus en plus favorisé par les développeurs. Parmi eux, Swoole prend en charge l'AMQP asynchrone, qui est l'un des scénarios d'application les plus courants. Voyons donc comment Swoole prend en charge les opérations AMQP asynchrones. Tout d’abord, nous devons clarifier ce qu’est l’AMQP. AMQP (AdvancedMessageQueuingProtocol) Avancé

Guide avancé de Python asyncio : du débutant à l'expert Guide avancé de Python asyncio : du débutant à l'expert Mar 04, 2024 am 09:43 AM

Programmation simultanée et asynchrone La programmation simultanée traite de plusieurs tâches s'exécutant simultanément, la programmation asynchrone est un type de programmation simultanée dans laquelle les tâches ne bloquent pas les threads. asyncio est une bibliothèque de programmation asynchrone en python, qui permet aux programmes d'effectuer des opérations d'E/S sans bloquer le thread principal. Boucle d'événements Le cœur d'asyncio est la boucle d'événements, qui surveille les événements d'E/S et planifie les tâches correspondantes. Lorsqu'une coroutine est prête, la boucle d'événements l'exécute jusqu'à ce qu'elle attende les opérations d'E/S. Il met ensuite la coroutine en pause et continue d'exécuter d'autres coroutines. Coroutines Les coroutines sont des fonctions qui peuvent suspendre et reprendre l'exécution. Le mot-clé asyncdef est utilisé pour créer des coroutines. La coroutine utilise le mot-clé wait pour attendre la fin de l'opération d'E/S. Les bases suivantes d'asyncio

Technologie asynchrone et non bloquante dans la gestion des exceptions Java Technologie asynchrone et non bloquante dans la gestion des exceptions Java May 01, 2024 pm 05:42 PM

Des techniques asynchrones et non bloquantes peuvent être utilisées pour compléter la gestion traditionnelle des exceptions, permettant la création d'applications Java plus réactives et efficaces : Gestion des exceptions asynchrones : gestion des exceptions dans un autre thread ou processus, permettant au thread principal de continuer à s'exécuter, évitant ainsi le blocage. Gestion des exceptions non bloquantes : implique la gestion des exceptions pilotées par les événements lorsqu'une opération d'E/S se déroule mal, évitant ainsi le blocage des threads et permettant à la boucle d'événements de gérer les exceptions.

Comment utiliser ThinkPHP6 pour les opérations de journalisation asynchrone ? Comment utiliser ThinkPHP6 pour les opérations de journalisation asynchrone ? Jun 12, 2023 am 09:57 AM

Avec le développement rapide d'Internet, les services de journalisation sont devenus un module essentiel pour toute application Web à grande échelle. Afin de faciliter divers besoins tels que le dépannage des erreurs et la surveillance des performances, cet article explique comment utiliser le framework ThinkPHP6 pour effectuer des opérations de journalisation asynchrone. 1. Qu'est-ce que la journalisation ? Dans le domaine de l'informatique, la journalisation fait référence à l'enregistrement d'événements et d'informations qui se produisent dans un système informatique. Généralement, ces enregistrements sont stockés dans des fichiers ou des bases de données. La journalisation permet de comprendre l'état de fonctionnement du système, de détecter et de résoudre les problèmes en temps opportun

See all articles