node.js - función de devolución de llamada

La realización directa de la programación asincrónica de Node.js es la devolución de llamada.

La programación asíncrona se basa en las devoluciones de llamada, pero no se puede decir que el programa sea asíncrono después de usar devoluciones de llamada.

La función de devolución de llamada se llamará después de que se complete la tarea. Node utiliza una gran cantidad de funciones de devolución de llamada, y todas las API de Node admiten funciones de devolución de llamada.

Por ejemplo, podemos ejecutar otros comandos mientras leemos un archivo.Después de leer el archivo, devolvemos el contenido del archivo como parámetro de la función de devolución de llamada. De esta manera, el código se ejecuta sin bloquear ni esperar operaciones de E/S de archivos. Esto mejora enormemente el rendimiento de Node.js y puede manejar una gran cantidad de solicitudes simultáneas.

La función de devolución de llamada generalmente aparece como el último parámetro de la función:

function foo1(name, age, callback) { }
function foo2(value, callback1, callback2) { }

Ejemplo de código de bloqueo

Cree un archivo input.txt con el siguiente contenido:

csdn网站地址:https://blog.csdn.net/jewels_w?type=lately

Cree un archivo main.js con el siguiente código:

var fs = require("fs");

var data = fs.readFileSync('input.txt');

console.log(data.toString());
console.log("程序执行结束!");

Los resultados de la ejecución del código anterior son los siguientes:

$ node main.js
csdn网站地址:https://blog.csdn.net/jewels_w?type=lately

程序执行结束!

Ejemplo de código sin bloqueo

Cree un archivo input.txt con el siguiente contenido:

csdn网站地址:https://blog.csdn.net/jewels_w?type=lately

Cree un archivo main.js con el siguiente código:

var fs = require("fs");

fs.readFile('input.txt', function (err, data) {
    if (err) return console.error(err);
    console.log(data.toString());
});

console.log("程序执行结束!");

Los resultados de la ejecución del código anterior son los siguientes:

$ node main.js
程序执行结束!
csdn网站地址:https://blog.csdn.net/jewels_w?type=lately

En los dos ejemplos anteriores, entendemos la diferencia entre bloquear y no bloquear llamadas. La primera instancia ejecuta el programa después de leer el archivo. En segunda instancia, no necesitamos esperar a que se lea el archivo, por lo que se puede ejecutar el siguiente código mientras se lee el archivo, lo que mejora mucho el rendimiento del programa.

Por lo tanto, el bloqueo se ejecuta en orden y el no bloqueo no necesita estar en orden, por lo que si necesitamos procesar los parámetros de la función de devolución de llamada, debemos escribirlos en la función de devolución de llamada.

Supongo que te gusta

Origin blog.csdn.net/jewels_w/article/details/130624637
Recomendado
Clasificación