Estoy muy confundido acerca de cómo hacer llamadas de funciones asíncronas a devoluciones de llamadas que requieren múltiples parámetros a los que la función inicial podría no tener acceso. Por ejemplo,
Llamo a getData con un count igual a 3 y la callback de llamada es una segunda función, parseData , que a su vez requiere los datos y un dataSchema .
const allData = [2, 2, 2, 2, 2] function getData(count, callback) { if (count <= allData.length) { return callback(null, allData.slice(0, count)); } else console.log("no"); } function parseData(data, dataSchema, callback) { // parse data according to schema } getData(3, parseData); getData no necesita saber sobre dataSchema , entonces, ¿cómo proporciono esa información a parseData mientras mantengo el flujo asíncrono?
Una opción sería:
getData(3, (err, data) => { if (err) console.log(error); else parseData(data, mySchema); }; dataSchema podría ser la estructura del objeto en el que queremos organizar los datos, un objeto con enumeraciones como claves frente a una matriz simple, por ejemplo. Solo pretende ilustrar que la devolución de llamada requiere información adicional que la función inicial no necesita y no debería tener.
Pero si hay varias operaciones, este enfoque conducirá a un anidamiento complejo.
EDITAR: sé que async/await y las promesas son una cosa, pero quería entender cómo se hizo esto antes.