Created
March 26, 2019 21:47
-
-
Save chrnx-dev/c5483a442ded0fe98d032290f572fadb to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
export async function createResource(req,res) { | |
try { | |
// cuando utilizar await y cuando no ? | |
/* Siempre que requieras un valor de una funcion async o await y que tu resultado no dependa de esa llamada*/ | |
// processResource puede tomar 2 o 3 minutos por eso creo que no deberia tener await | |
// para no tener esperando la respuesta del endpoint hasta que termine | |
/* processResource debes usar await, ya que creo que tu resultado depende de esa funcion, no importa cuanto tome al final si dependes | |
mostrar el resultado en resourceId, deberias refactorizar processResource de otro modo nodejs y express siempre entregara un undefined*/ | |
processResourceRequest(); | |
return res.status(HTTPStatuses.CREATED).json(resourceId); | |
} catch { | |
return res.status(HTTPStatuses.BAD_REQUEST).json(error); | |
} | |
} | |
export const processResourceRequest = async (resourceId, hostName) => { | |
/** El try catch esta de mas ya lo estas validando en el response */ | |
try { | |
// cualquier numero de llamadas a funciones incluyendo api calls y mongo | |
//ahi si usando await | |
/** Aqui es donde debes pensar en el refactoring, usa await si necesitas el valor pondre un ejemplo aqui */ | |
const otrasPromisesResults = Promise.all([retornaPromise1(), retornaPromise2(), retornaPromise3()]); | |
// ^ estas se hacen en paralelo sin embargo si quieres que terminen todas las promises agrega await antes de Promise esto bloqueara | |
// a node hasta que se finalize todas las promises. | |
const resource = await Resource.findByid(...): // <- esta espera a que termine el findById | |
runTerraformForResource(resourceId); | |
} catch (e) { | |
throw new Error('Error at resource.controller.processResourceRequest :' + e); | |
} | |
} | |
// la duda del for // esta bin definida la funcion o deberia usar promise.resolve or reject ? | |
/** Aqui es donde pregunte si necesitabas hacer en paralelo o en serie **/ | |
async function checkForHostinAD(searchstring) { | |
let hostFound = false; | |
let result; | |
for (let i = 0, len = ldapQueryOptions.length; i < len; i++) { | |
/** Aqui estas obligando a esperar al for a hacer cada request podrias hacer estos en batch de 5 por ejemplo como paginate | |
haces esos request en paralelo y luego haces la validacion, aunque se me hace extrano que hagas todo uno a uno creo que es | |
mejor si se hace todo de un jalon**/ | |
result = await queryLdapForHost(searchstring, ldapQueryOptions[i]); | |
if(result && (result.entries.length > 0)) { | |
console.log('Record found in AD: ' + result.entries[0].distinguishedName) | |
hostFound = true; | |
break; | |
} | |
} | |
return hostFound; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment