Ejemplo del uso de "async await"

Este es un ejemplo del uso de "async / await" junto a contener una operación en una promesa, para dar como resultado un código que es relativamente fácil de seguir. ` 'use strict' const = require('lodash') const getRows = async(filePath)=>{ const rows = [] const lineReader = require('readline').createInterface({ input: require('fs').createReadStream((filePath)) }) const finalizedRows = await new Promise((resolve, reject) =>{ lineReader.on('line', (line)=> { rows.push(line) }).on('close', ()=> { resolve(rows) }) }) return finalizedRows } const process = async ()=> { const keepRows = await getRows('keepfile.txt') const discardRows = await getRows('filteroutfile.txt') const finalRows = [] .each(keepRows, (keepRow)=>{ if (!_.includes(discardRows, keepRow)) finalRows.push(keepRow) })

console.log("keep length: " + keepRows.length) console.log("filter out length: " + discardRows.length) console.log("final rows legnth: " + finalRows.length)

_.each(finalRows, (finalRow)=>{ console.log(finalRow) }) } process() ` Cuando estamos lidiando con operaciones asíncronas, en este caso se necesita leer de dos archivos diferentes, deberíamos tener cuidado al escribir un código que crea arrays de datos como resultado y luego opera en el array. Este enfoque dirigirá al código a un acoplamiento ligero. Por ejemplo, en este caso, el código que viene después de: const keepRows = await getRows('keepfile.txt') const discardRows = await getRows('filteroutfile.txt') No posee ningún conocimiento del hecho de dónde procedieron keepRows y discardRows . Con estilos de código de JavaScript antiguos, el código tendería a ser estrechamente acoplado, como con callbacks. El objetivo del código de arriba es que gestionemos cuidadosamente las operaciones asíncronas para que no presenten un acoplamiento estrecho.