¿Cómo devolver una array desde la función asíncrona en Node.js?

Tenemos que llamar a la función asíncrona desde otra función que puede ser asíncrona o síncrona (podemos pasar la array o elegir declarar la array en la propia función asíncrona) y luego devolver la array desde la función asíncrona.

El enfoque básico es incluir un bloque try-catch. Si ocurre algo incorrecto al ejecutar las instrucciones del bloque de prueba, se usa un bloque catch para manejar la excepción.

Ejemplo 1: A continuación se muestra el código en el que llamamos a la función de impresión . Definimos la array en esta función (en este caso asíncrona), la pasamos a otra ordenación de función asíncrona . La función de clasificación luego ordena la array y la devuelve, y luego mostramos la array desde la función de impresión .

index.js

const sort = async (arr) => {
    try {
        let i, j, temp;
  
        // Using bubble sort to sort the array 
        for (i = 0; i < arr.length; i++) {
            for (j = i + 1; j < arr.length; j++) {
                if (arr[i] > arr[j]) {
  
                    // The await prevents the 
                    // execution of next line 
                    // until this line is executed
                    temp = await arr[i];
                    arr[i] = await arr[j];
                    arr[j] = await temp;
                }
            }
        }
  
        // Returns the sorted array
        return arr;
    }
    catch (e) {
  
        // Display the error in case
        // enything wrong happened
        console.log(e)
    }
}
  
const print = async () => {
  
    // Use try-catch block to handle error
    try {
  
        // Define and initialize an array
        let arr = [17, 90, 13, 10, 76]
  
        // Call the "sort" function passing
        // the array and store the result in
        // "sortedArray", await will prevent
        // the execution of next line until
        // this line is executed.
        const sortedArray = await sort(arr)
  
        // Display sortedArray to check if 
        // everything works fine
        console.log(sortedArray)
    }
    catch (e) {
  
        // Display the error in case 
        // anything wrong happened
        console.log(e)
    }
}
  
// Calling print() is called
print();

Ejecute el archivo index.js con el siguiente comando:

node index.js

Producción:

[ 10, 13, 17, 76, 90 ]

Ejemplo 2: ahora veamos el ejemplo de devolver una array desde una función asíncrona que se ha declarado en esa función asíncrona. La función devolverá una array de todos los números primos que son menores que un número dado N.

index.js

const prime = async (N) => {
    try {
        const arr = []
  
        // Iterate from 2 to N-1 to check
        // which numbers are prime
        for (var i = 2; i < N; i++) {
            let j = 2
            while (j < i) {
                // Check if the number is 
                // divisble by any number
                // except 1 and itself
                if (i % j == 0) {
                    break
                }
                j++;
            }
            if (j == i) {
                // If this condition holds 
                // true then it means that
                // the number is not 
                // divisible by any number
                // except 1 and itself. 
                // Therefore, it is a prime 
                // number and add this number
                // to the array.
                arr.push(j)
            }
        }
  
        // Return the array
        return arr
    }
    catch (e) {
  
        // Display the error in case
        // anything wrong happened
        console.log(e)
    }
}
  
const findPrime = async () => {
    try {
        let N = 20
  
        // Call prime() passing argument
        // N which is equal to 20 and 
        // store the result in an array
        const primeAry = await prime(N)
  
        // Print the array
        console.log(primeAry)
    }
    catch (e) {
          
        // Display the error in case
        // anything wrong happened
        console.log(e)
    }
}
  
// Calling findPrime() method
findPrime()

Producción:

[
   2,  3,  5,  7,
   11, 13, 17, 19 
]

Publicación traducida automáticamente

Artículo escrito por rupalics18 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *