Heim Web-Frontend js-Tutorial Ein einfacher Manager für asynchrone Node.js-Operationen, der Javascript-Kenntnisse teilt

Ein einfacher Manager für asynchrone Node.js-Operationen, der Javascript-Kenntnisse teilt

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

Ich habe in letzter Zeit viel über Nodejs geschrieben, weil das, was ich tun wollte, relativ einfach war und ich festgestellt habe, dass es eine synchrone Operation gibt Ich habe gerade die synchrone Funktion verwendet. Das ist kein Problem, aber es ist wirklich peinlich, dass viele Dinge keine synchrone API haben.

Okay! Beim asynchronen Schreiben tauchte diese Art von Code nach und nach auf. . .

Code kopieren Der Code lautet wie folgt:

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

Nun, Sie haben auch gesehen, wie hässlich der Code sein wird, wenn er so weitergeht. Er wird wie ein Fußtuch einer alten Dame aussehen, also wird der folgende asynchrone Betriebsmanager generiert: Klein und exquisit, hehe, das ist definitiv genug Code, lassen Sie uns mit dem Code darüber sprechen. Markieren Sie einfach den Code, z. B.:
TODO: Nicht umfassend genug, Fehler werden beispielsweise nicht behandelt


Code kopieren Der Code lautet wie folgt:

/*
* Async Manager
* Autor: jser.me
*
* Verwendung:
* var asyncMg = require('./AsyncManager') ;
* asyncMg
* .push(function(next){
* some_aysnc_method().on('success'{
* next();
*                                                                                                           * })
* })
* .push( ... )
* .run() //Ausführen
* .on('success', function() {
* allThings_is_down();
*    });
function typeOf( obj ){
return Object.prototype.toString.call( obj ).match(/[object ([^]]*)]/)[1];
}

function AsyncManager( arg ){
this.execArrys = [];
this.push( arg );
}

//Verwenden Sie die vom System bereitgestellte Vererbungsmethode require('util').inherits( AsyncManager, require('events').EventEmitter );


//Markieren Sie die Anzahl erfolgreich ausgeführter Funktionen
AsyncManager.prototype.succCount = 0;


//Hinzufügen
AsyncManager.prototype.push = function( arg ) {

var This = this;

if( typeOf(arg) == 'Array' ){
arg.forEach( function(v,i){

This.execArrys.push( v );

          });
                                                                                .

//Ausführen

AsyncManager.prototype.run = function(){
var self = this;

If( this.succCount == this.execArrys.length ) {

//Ereignisse werden ausgelöst, nachdem alle Funktionen erfolgreich ausgeführt wurden
this.emit( ​​​​'success' );
} else {
this.execArrys[ this.succCount ]( self.run.bind( self ) );
}

this.succCount ;
return this; //Chain one

};


exports = module.exports = function( arg ){

return new AsyncManager( arg );

}


Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Ein Artikel über Speichersteuerung in Node Ein Artikel über Speichersteuerung in Node Apr 26, 2023 pm 05:37 PM

Der nicht blockierende und ereignisgesteuerte Knotendienst hat den Vorteil eines geringen Speicherverbrauchs und eignet sich sehr gut für die Verarbeitung massiver Netzwerkanforderungen. Unter der Voraussetzung massiver Anfragen müssen Probleme im Zusammenhang mit der „Speicherkontrolle“ berücksichtigt werden. 1. Der Garbage-Collection-Mechanismus und die Speicherbeschränkungen von V8 Js wird von der Garbage-Collection-Maschine gesteuert

Lassen Sie uns ausführlich über das File-Modul in Node sprechen Lassen Sie uns ausführlich über das File-Modul in Node sprechen Apr 24, 2023 pm 05:49 PM

Das Dateimodul ist eine Kapselung der zugrunde liegenden Dateioperationen, wie z. B. Lesen/Schreiben/Öffnen/Schließen/Löschen von Dateien, Hinzufügen usw. Das größte Merkmal des Dateimoduls besteht darin, dass alle Methoden zwei Versionen von **synchronem** und **bereitstellen. asynchron**, mit Methoden mit dem Suffix sync sind alle Synchronisationsmethoden, und diejenigen ohne sind alle heterogene Methoden.

Schnelle Anwendung: Praktische Entwicklungsfallanalyse des asynchronen HTTP-Downloads mehrerer PHP-Dateien Schnelle Anwendung: Praktische Entwicklungsfallanalyse des asynchronen HTTP-Downloads mehrerer PHP-Dateien Sep 12, 2023 pm 01:15 PM

Schnelle Anwendung: Praktische Entwicklungsfallanalyse von PHP Asynchroner HTTP-Download mehrerer Dateien Mit der Entwicklung des Internets ist die Funktion zum Herunterladen von Dateien zu einem der Grundbedürfnisse vieler Websites und Anwendungen geworden. In Szenarien, in denen mehrere Dateien gleichzeitig heruntergeladen werden müssen, ist die herkömmliche synchrone Download-Methode oft ineffizient und zeitaufwändig. Aus diesem Grund ist die Verwendung von PHP zum asynchronen Herunterladen mehrerer Dateien über HTTP eine zunehmend verbreitete Lösung. In diesem Artikel wird anhand eines tatsächlichen Entwicklungsfalls detailliert analysiert, wie PHP asynchrones HTTP verwendet.

Erfahren Sie mehr über Puffer in Node Erfahren Sie mehr über Puffer in Node Apr 25, 2023 pm 07:49 PM

Zu Beginn lief JS nur auf der Browserseite. Es war einfach, Unicode-codierte Zeichenfolgen zu verarbeiten, aber es war schwierig, binäre und nicht Unicode-codierte Zeichenfolgen zu verarbeiten. Und Binär ist das Datenformat der niedrigsten Ebene des Computer-, Video-/Audio-/Programm-/Netzwerkpakets

Wie Swoole asynchrone SMTP-Vorgänge unterstützt Wie Swoole asynchrone SMTP-Vorgänge unterstützt Jun 25, 2023 pm 12:24 PM

Mit der kontinuierlichen Weiterentwicklung und Popularisierung des Internets ist E-Mail zu einem unverzichtbaren Bestandteil des Lebens und der Arbeit der Menschen geworden, und SMTP (Simple Mail Transfer Protocol) ist eines der wichtigen Protokolle für den E-Mail-Versand. Als asynchrones Netzwerkkommunikations-Framework für PHP kann Swoole asynchrone SMTP-Vorgänge gut unterstützen und so den E-Mail-Versand effizienter und stabiler machen. In diesem Artikel wird vorgestellt, wie Swoole asynchrone SMTP-Vorgänge unterstützt, einschließlich der Verwendung

Erweiterter Leitfaden zu Python Asyncio: Vom Anfänger zum Experten Erweiterter Leitfaden zu Python Asyncio: Vom Anfänger zum Experten Mar 04, 2024 am 09:43 AM

Gleichzeitige und asynchrone Programmierung Bei der gleichzeitigen Programmierung geht es um die gleichzeitige Ausführung mehrerer Aufgaben. Bei der asynchronen Programmierung handelt es sich um eine Art der gleichzeitigen Programmierung, bei der Aufgaben keine Threads blockieren. asyncio ist eine Bibliothek für die asynchrone Programmierung in Python, die es Programmen ermöglicht, I/O-Vorgänge auszuführen, ohne den Hauptthread zu blockieren. Ereignisschleife Der Kern von Asyncio ist die Ereignisschleife, die I/O-Ereignisse überwacht und entsprechende Aufgaben plant. Wenn eine Coroutine bereit ist, wird sie von der Ereignisschleife ausgeführt, bis sie auf E/A-Operationen wartet. Anschließend wird die Coroutine angehalten und die Ausführung anderer Coroutinen fortgesetzt. Coroutinen Coroutinen sind Funktionen, die die Ausführung anhalten und fortsetzen können. Das Schlüsselwort asyncdef wird zum Erstellen von Coroutinen verwendet. Die Coroutine verwendet das Schlüsselwort „await“, um auf den Abschluss des E/A-Vorgangs zu warten. Die folgenden Grundlagen von Asyncio

Entwicklung asynchroner PHP-Coroutinen: Beschleunigen Sie das Daten-Caching sowie Lese- und Schreibvorgänge Entwicklung asynchroner PHP-Coroutinen: Beschleunigen Sie das Daten-Caching sowie Lese- und Schreibvorgänge Dec 18, 2023 pm 01:09 PM

Asynchrone PHP-Coroutinen-Entwicklung: Beschleunigung von Daten-Caching sowie Lese- und Schreibvorgängen. In der tatsächlichen Anwendungsentwicklung sind Daten-Caching sowie Lese- und Schreibvorgänge häufige Leistungsengpässe. Um die Systemeffizienz und das Benutzererlebnis zu verbessern, kann die asynchrone PHP-Coroutine-Technologie zur Beschleunigung dieser Vorgänge eingesetzt werden. In diesem Artikel werden die grundlegenden Konzepte und Prinzipien der asynchronen PHP-Koroutine vorgestellt und spezifische Codebeispiele bereitgestellt. 1. Das Konzept und Prinzip der asynchronen Coroutine Asynchrone Coroutine ist eine effiziente gleichzeitige Programmiertechnologie, die einen einzelnen Thread verwendet, um eine einfache Aufgabenplanung und Zusammenarbeit zu erreichen. Im Vergleich zur herkömmlichen Multithread- oder Multiprozess-Parallelprogrammierung

So verwenden Sie die asynchrone Anforderungsfunktion in der Vue-Dokumentation So verwenden Sie die asynchrone Anforderungsfunktion in der Vue-Dokumentation Jun 20, 2023 pm 05:55 PM

Vue.js ist ein beliebtes Front-End-JavaScript-Framework, das eine Möglichkeit bietet, Benutzeroberflächen in Ihren Anwendungen zu erstellen. In der Vue.js-Dokumentation finden wir viele nützliche Informationen, insbesondere zur Verwendung asynchroner Anforderungsfunktionen. Asynchrone Anforderungsfunktionen sind eine Möglichkeit, asynchrone Aufgaben in einer Anwendung auszuführen. Sie werden verwendet, um Daten vom Server abzurufen, Eingaben zu verarbeiten, Formulare zu validieren usw. Im Allgemeinen müssen asynchrone Anforderungsfunktionen mit Java-Funktionen wie Promise, Async und Wait kombiniert werden.

See all articles