ASYNC en Node.JS

Soy un poco nuevo para async en Node.JS y devoluciones de llamada. ¿Podría por favor avisarme si esta es la forma correcta de hacer una llamada asíncrona?

function myFunc(schema) { async.each(Object.keys(schema), function(variable) { for (item in schema[variable]) { for (field in schema[variable][item]) { // Some operations go here } createDB(item, schema[variable][item]); } }); } function CreateDB(name, new_items) { ddb.createTable(selected_field.name, {hash: ['id', ddb.schemaTypes().number], range: ['time', ddb.schemaTypes().string], AttributeDefinitions: new_items }, {read: 1, write: 1}, function(err, details) { console.log("The DB is now created!"); }); } 

Gracias

Esta sería una forma de hacerlo, todo duro. No soy un fanático de las devoluciones de llamada, prefiero usar promesas .
Este enfoque solo propagará todos los errores a la cb1 , si desea manejar los errores en cb1 , debe envolverlos o tratar de corregirlos .

Si vas a hacer operaciones asíncronas en ese bucle interno para, estás en algo de diversión refactoría asíncrona adicional.

 function myFunc(schema, cb1) { async.each(Object.keys(schema), function(variable, cb2) { async.each(Object.keys(schema[variable]), function(item, cb3) { for (var field in schema[variable][item]) { // Some operations go here } createDB(item, schema[variable][item], cb3); }, cb2); }, cb1); } function CreateDB(name, new_items, cb) { ddb.createTable(selected_field.name, {hash: ['id', ddb.schemaTypes().number], range: ['time', ddb.schemaTypes().string], AttributeDefinitions: new_items }, {read: 1, write: 1}, cb); }