En algunas ocasiones tenemos que hacer un test y que este espere un tiempo hasta que una funcion termine, ya que esta es asincrona. Para ello tenemos la siguiente posible implementacion.
function it (theSubject, funct){
function doneCallback() {
console.log('done');
}
try {
if (funct.length >=1) {
funct(doneCallback);
}
else {
funct();
}
console.log(theSubject);
} catch (error) {
throw theSubject + ':' + error;
}
}
}
it ('foo', function(doneCallback){
var x = 1;
cosole.log(x);
doneCallback();
});
En ese caso el codigo es sincrono, solamente tiene un flujo de ejecucion.
“Si tengo callbacks no significa que sea sincrono, pero si quiero que sea sincrono tengo que usar callbacks”
Los setTimeout
y setInterval
no son realmente paralelos el explorador
busca un lugar en el que este libre y lo ejecuta, siempre despues de el tiempo
que se le ha indicado. Es decir, te asegura que esa funcion se ejecutara
despues de pasado ese tiempo, pero no tiene porque ser exactamente en ese
tiempo.
En las nuevas version de ECMAScript puedes usar las funciones await
y
async
para ahorrarnos el set up que tenemos hasta ahora hecho. Aun con
estas funcionalidades no podemos dejarle todo el trabajo, tenemos que conocer
como funcionan estas para poder usarlas correctamente y evitarnos problemas
que nos pueden generar por su mal uso.
Concurrente != sincrono Concurrente al mismo tiempo Sincrono
EndPoint
url a la que poder atacar con alguno de los comandoes HTTP GET
,
POST
AJAX
Ajax es uno de los ejemplos de flujos de ejecucion paralelos, tu cuando haces una peticion al servidor de unos datos, no congelas la aplicacion hasta que el servidor te devuelva los datos. Tu haces la peticion de los datos y continuas usando la aplicacion y cuando el servidor te da una respuesta la utilizas.
MDN explica muy bien todo el tema de Ajax