Heim > Web-Frontend > js-Tutorial > Hauptteil

Eine kurze Diskussion zur asynchronen asynchronen Programmierung in node.js_node.js

WBOY
Freigeben: 2016-05-16 15:35:46
Original
1051 Leute haben es durchsucht

1. Was ist asynchrone Programmierung?

Asynchrone Programmierung bezieht sich auf den Fall, dass die Ausführungsergebnisse aufgrund asynchroner E/A und anderer Faktoren nicht synchron erhalten werden können,
Der Codierungsstil zum Ausführen der nächsten Operation in der Rückruffunktion, gängige wie die SetTimeout-Funktion, Ajax-Anfrage usw.

Beispiel:

for (var i = 1; i <= 3; i++) {
setTimeout(function(){
console.log(i);
}, 0);
};
Nach dem Login kopieren

Die meisten Leute hier werden denken, dass die Ausgabe 123 oder 333 ist. Tatsächlich wird 444 ausgegeben

Hier ist, was wir über asynchrone Programmierung sprechen.

Definition erweiterter Funktionen

Warum sprechen wir hier von High-Level-Funktionen? Denn High-Level-Funktionen sind die Grundlage der asynchronen Programmierung.

Was sind also erweiterte Funktionen?
Tatsächlich akzeptieren erweiterte Funktionen Funktionen als Parameter oder als Rückgabewerte.

Beispiel:

function test(v){
return function(){
return v;
}
}
Nach dem Login kopieren

Das Obige dient dazu, eine Funktion als Rückgabewert zu verwenden.

2. Prozesskontrolle

Die Funktionen sind:
Serie
Wasserfall
parallel
parallelLimit

Serienfunktion Serienausführung

Seine Funktion besteht darin, es nacheinander auszuführen.

async.series({
  one: function(callback){
    callback(null, 1);
  },
  two: function(callback){
    callback(null, 2);
  }
},function(err, results) {
  console.log(results);
});
Nach dem Login kopieren

Ausgabe: {eins: 1, zwei: 2}

Der erste Parameter der Serienfunktion kann ein Array oder ein JSON-Objekt sein,
Verschiedene Parametertypen wirken sich auf das Format der zurückgegebenen Daten aus.

Wasserfallfunktion Wasserfallfluss

Wasserfall- und Serienfunktionen haben viele Ähnlichkeiten, beide werden der Reihe nach ausgeführt.
Der Unterschied besteht darin, dass der von jeder Funktion in Wasserfall generierte Wert an die nächste Funktion übergeben wird, während Serien diese Funktion nicht haben. Ein Beispiel ist wie folgt:

async.waterfall([
  function(callback){
    callback(null, 'one', 'two');
  },
  function(arg1, arg2, callback){
   // arg1 now equals 'one' and arg2 now equals 'two'
    callback(null, 'three');
  },
  function(arg1, callback){
    // arg1 now equals 'three'
    callback(null, 'done');
  }
], function (err, result) {
  // result now equals 'done'
  console.log(result);
});
Nach dem Login kopieren

Es sollte auch beachtet werden, dass der Aufgabenparameter von Wasserfall nur vom Array-Typ sein kann.
Wenn in der Mitte ein Funktionsfehler auftritt, wird sein Fehler direkt an den letzten Rückruf übergeben, das Ergebnis wird verworfen und nachfolgende Funktionen werden nicht mehr ausgeführt.

parallel(tasks, [callback])

Die Parallelfunktion führt mehrere Funktionen parallel aus. Jede Funktion wird sofort ausgeführt, ohne zuerst auf die Ausführung anderer Funktionen zu warten.
Die Daten im Array, die an den letzten Rückruf übergeben werden, sind in der in den Aufgaben angegebenen Reihenfolge und nicht in der Reihenfolge, in der die Ausführung abgeschlossen ist. Ein Beispiel ist wie folgt:

async.parallel([
  function(callback){
    callback(null, 'one');
  },
  function(callback){
    callback(null, 'two');
  }
],
function(err, results){

});

Nach dem Login kopieren

Der Aufgabenparameter kann ein Array oder ein JSON-Objekt sein, genau wie die Serienfunktion
Unterschiedliche Aufgabenparametertypen führen zu unterschiedlichen Formaten der zurückgegebenen Ergebnisse.

parallelLimit(tasks, limit, [callback])

Die parallelLimit-Funktion ähnelt parallel, verfügt jedoch über eine zusätzliche Parameterbegrenzung.
Der Limit-Parameter beschränkt Aufgaben auf eine bestimmte Anzahl gleichzeitiger Aufgaben und nicht auf unbegrenzte Parallelität. Das Beispiel lautet wie folgt:

async.parallelLimit([
  function(callback){
    callback(null, 'one');
  },
  function(callback){
    callback(null, 'two');
  }
],
Nach dem Login kopieren

2,

function(err, results){
  console.log(results);
});
Nach dem Login kopieren

Verwandte Etiketten:
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!