Heim  >  Artikel  >  Web-Frontend  >  Was ist der Unterschied zwischen Knotensynchronisation und Asynchronität?

Was ist der Unterschied zwischen Knotensynchronisation und Asynchronität?

WBOY
WBOYOriginal
2022-04-19 17:25:473007Durchsuche

Der Unterschied zwischen Knotensynchronisation und asynchroner Synchronisation besteht darin, dass das Programm von oben nach unten ausgeführt wird und der nächste Schritt erst ausgeführt werden kann, nachdem der vorherige Schritt ausgeführt wurde. Asynchron bedeutet, dass nicht auf den oben genannten Schritt gewartet werden muss Beenden Sie die Ausführung, bevor Sie die folgenden Vorgänge ausführen. Asynchrone Programmierung kann mithilfe von Rückrufen implementiert werden, bedeutet jedoch nicht, dass das Programm nach dem Rückruf asynchron ist.

Was ist der Unterschied zwischen Knotensynchronisation und Asynchronität?

Die Betriebsumgebung dieses Tutorials: Windows 10-System, NodeJS-Version 12.19.0, Dell G3-Computer.

Was ist der Unterschied zwischen synchronem und asynchronem Knoten?

Synchronisierung bedeutet, dass das Programm von oben nach unten ausgeführt wird, während asynchron bedeutet, dass nicht auf den Abschluss der oben genannten Vorgänge gewartet werden muss, bevor die folgenden Vorgänge ausgeführt werden. Die asynchrone Programmierung basiert auf Rückrufen, es kann jedoch nicht gesagt werden, dass das Programm nach der Verwendung von Rückrufen asynchron wird.

Synchronisation auf Englisch: sync (Synchronisation)

Asynchrones Englisch: async (asynchron)

Synchronisations-API: Erst nachdem die Ausführung der aktuellen API abgeschlossen ist, kann die nächste API weiter ausgeführt werden

console.log('before'); 
console.log('after');

Asynchron API: Die aktuelle API-Ausführung blockiert nicht die Ausführung von nachfolgendem Code. aber die asynchrone API kann nicht (es scheint, dass Sie keine Ergebnisse erhalten können, selbst wenn Sie return in eine asynchrone API schreiben? )

console.log('before');
setTimeout(
   () => { console.log('last');
}, 2000);
console.log('after');

Rückruffunktion

Definieren Sie Ihre eigene Funktion und lassen Sie sie von anderen aufrufen.

// 异步
  function getMsg () { 
      setTimeout(function () { 
          return { msg: 'Hello Node.js' }
      }, 2000);
  }
  const msg = getMsg (); //函数没有写return 默认是返回 undefined
cnsole.log(msg); // 输出的是 undefined,因为定时器还没执行完就执行了输出
Der Unterschied zwischen synchroner API und asynchroner API (Codeausführungsreihenfolge)

Die synchrone API wird der Reihe nach von oben nach unten ausgeführt. Der vorherige Code blockiert die Ausführung des folgenden Codes

Die asynchrone API wird nicht ausgeführt Warten Sie, bis die API-Ausführung abgeschlossen ist, bevor Sie den Ausführungscode abbrechen

Analyse der Codeausführungssequenz

JavaScript ist in einen synchronen Codeausführungsbereich und einen asynchronen Codeausführungsbereich unterteilt, zwischen denen eine Rückruffunktionswarteschlangenverbindung besteht. Zuerst führt JavaScript den gesamten Inhalt des synchronen Codebereichs aus, geht dann zum asynchronen Codebereich, um den Code auszuführen, sucht den Codeblock, der im asynchronen Codebereich ausgeführt wurde, und findet sofort die entsprechende Rückruffunktion Um die asynchrone API in der

Node.js

read-Datei-API auszuführen, gibt es eine Rückruffunktion.

Die Event-Listening-API verfügt auch über Rückruffunktionen. (Die Ereignisverarbeitungsfunktion ist die Rückruffunktion und die Ereignisüberwachungs-API ist die asynchrone API.)

Wenn die Ausführung des Codes hinter der asynchronen API vom Ausführungsergebnis der aktuellen asynchronen API abhängt, die asynchrone API jedoch tatsächlich davon abhängt Wenn der nachfolgende Code ausgeführt wird, wird das Ergebnis nicht zurückgegeben. Wie kann dieses Problem gelöst werden?

Zum Beispiel gibt es eine Anforderung: A-Datei, B-Datei, C-Datei nacheinander lesen (A, dann B, dann C lesen, kann nicht gleichzeitig gelesen werden)

Wenn die obige Anforderung erfüllt ist, wird sie es tun führe zur Operation zum Lesen von B. Fügen Sie es in die Rückruffunktion von A ein, und die Operation zum Lesen von C wird in die Rückruffunktion von B eingefügt, was zu vielen Verschachtelungsebenen führt (Rückrufhölle)

// getData函数定义
 function getData (callback) {}
  // getData函数调用
 getData (() => {});
/*例子------------------*/
function getMsg (callback) {
    setTimeout(function () {
        callback ({ msg: 'Hello Node.js' })
    }, 2000);
}
getMsg (function (msg) { 
    console.log(msg);
});

Empfohlenes Lernen: „

nodejs Video Tutorial

"

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen Knotensynchronisation und Asynchronität?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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