Heim  >  Artikel  >  Web-Frontend  >  Eine kurze Diskussion über Rückrufe in Nodejs

Eine kurze Diskussion über Rückrufe in Nodejs

青灯夜游
青灯夜游nach vorne
2021-05-19 09:47:252544Durchsuche

In diesem Artikel wird Ihnen der Rückruf in Nodejs vorgestellt. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.

Eine kurze Diskussion über Rückrufe in Nodejs

Empfohlene Studie: „nodejs-Tutorial

Was ist callback? Offensichtlich ist die wörtliche Bedeutung Rückrufcallback?  很显然,字面意思就是回调

那为什么在Node中需要回调操作呢?了解过Node的同学可能会知道,就是为处理异步操作的结果。

下面就是针对这个问题来详细说一下:

在说异步操作的callback回调之前,我们先看一下同步的操作模式:

function processData () {
  var data = fetchData ();
  data += 1;
  return data;
}

这种同步模式一般情况下可以正常工作,在其他开发环境下这种操作也是很典型的。然后可以明显的看到fectData方法如果在加载数据的时候很耗时,就会造成在数据同步加载完成之前整个程序阻塞的情况。

Node.js是一个异步的操作处理的平台,其使用callback回调的形式将不会被类似于文件I/O操作等阻塞。一个回调函数就是在一个给定的任务执行完成之后执行的函数;这种方式可以避免一些阻塞的情况,同时允许其他的代码继续执行。

我们使用Node.js的回调的形式去处理上面的同步操作fetchData耗时的情况:

function processData (callback) {
  fetchData(function (err, data) {
    if (err) {
      console.log("An error has occurred. Abort everything!");
      return callback(err);
    }
    data += 1;
    callback(data);
  });
}

一开始看的话,确实会觉得有些复杂,不太容易理解,但是确实很重要,因为回调处理异步操作是Node.js的基础。

callback回调的意思就是:你的异步操作完成之后,你就执行我的callback回调里面的内容。

Node.js这种回调处理异步操作的形式允许我们尽可能多的处理并发操作(操作类似于IO操作)

举个例子:

在一个web服务上,前面有几个请求,由于某种原因阻塞了,同时之后还会有成百上千的请求正在发出;

Node.js会如何处理这种异步阻塞的情况呢?

其会执行异步的执行阻塞查询,使之后的查询请求可以正常工作,而不是说等待前面的阻塞请求结束之后,才去处理之后的请求。

下面是是使用异步函数的典型格式:

function asyncOperation ( a, b, c, callback ) {
  // ... lots of hard work ...
  if ( /* an error occurs */ ) {
    return callback(new Error("An error has occurred"));
  }
  // ... more work ...
  callback(null, d, e, f);
}

asyncOperation ( params.., function ( err, returnValues.. ) {
  //This code gets run after the async operation gets run
});

callback一般是异步函数的做后一个参数,当异步操作结束之后,去调用这个callback

一般情况下,callback的第一个参数是error

如果异步操作遇到了错误,就会去调用callback,第一个参数是一个Error对象;反之,第一个errornull

Warum ist also eine Rückrufoperation in Node erforderlich? Studenten, die Node kennen, wissen möglicherweise, dass es sich um die Verarbeitung der Ergebnisse asynchroner Vorgänge handelt.

Das Folgende ist eine detaillierte Erklärung dieses Problems:

Bevor wir über den callback-Rückruf des asynchronen Betriebs sprechen, werfen wir einen Blick auf den synchronen Betriebsmodus:

rrreeeDieser Synchronisationsmodus kann im Allgemeinen sein used Funktioniert normal und dieses Verhalten ist typisch für andere Entwicklungsumgebungen. Dann können Sie deutlich sehen, dass, wenn die Methode fectData beim Laden von Daten sehr zeitaufwändig ist, das gesamte Programm blockiert, bevor das Laden der Datensynchronisation abgeschlossen ist.

Node.js ist eine asynchrone Operationsverarbeitungsplattform. Die Verwendung von callback wird nicht durch Datei-E/A-Operationen blockiert. Eine Rückruffunktion ist eine Funktion, die ausgeführt wird, nachdem eine bestimmte Aufgabe abgeschlossen wurde; dieser Ansatz vermeidet einige Blockierungssituationen und ermöglicht gleichzeitig die weitere Ausführung anderen Codes. 🎜🎜Wir verwenden die Rückrufform von Node.js, um die zeitaufwändige Situation des oben genannten Synchronisierungsvorgangs fetchData zu bewältigen: 🎜rrreee🎜Auf den ersten Blick scheint es etwas kompliziert und nicht leicht zu verstehen , aber es ist wirklich wichtig, weil Rückrufe für die Handhabung asynchroner Vorgänge für Node.js von grundlegender Bedeutung sind. 🎜🎜callbackDie Bedeutung von callback ist: Nachdem Ihr asynchroner Vorgang abgeschlossen ist, führen Sie den Inhalt in meinem callback-callback aus. 🎜🎜Die Form der Rückrufverarbeitung von asynchronen Vorgängen durch Node.js ermöglicht es uns, so viele gleichzeitige Vorgänge wie möglich abzuwickeln (die Vorgänge ähneln E/A-Vorgängen). 🎜🎜Zum Beispiel: 🎜🎜Bei einem Webdienst stehen mehrere Anforderungen davor . Es ist aus irgendeinem Grund blockiert und es werden in Zukunft Hunderte oder Tausende von Anfragen ausgegeben. 🎜🎜Wie wird Node.js mit dieser asynchronen Blockierungssituation umgehen? 🎜🎜Blockierungsabfragen werden asynchron ausgeführt, sodass nachfolgende Abfrageanforderungen normal funktionieren können, anstatt auf das Ende der vorherigen Blockierungsanforderung zu warten, bevor nachfolgende Anforderungen verarbeitet werden. 🎜🎜Das folgende ist das typische Format für die Verwendung einer asynchronen Funktion: 🎜rrreee🎜callback ist im Allgemeinen der letzte Parameter der asynchronen Funktion. Wenn der asynchrone Vorgang endet, rufen Sie diesen callbackauf > . 🎜🎜Normalerweise ist der erste Parameter von callback error🎜🎜Wenn bei einem asynchronen Vorgang ein Fehler auftritt, wird callback aufgerufen ist ein Error-Objekt; andernfalls ist der erste error null und andere Parameter werden normal zurückgegeben. 🎜🎜🎜Englische Originaladresse: https://nodejs.org/en/knowledge/getting-started/control-flow/what-are-callbacks/🎜🎜🎜Weitere Kenntnisse zum Thema Programmierung finden Sie unter: 🎜Programmiervideo🎜 ! ! 🎜

Das obige ist der detaillierte Inhalt vonEine kurze Diskussion über Rückrufe in Nodejs. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:juejin.cn. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen