Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/11/2018, 06:28
melkart239
 
Fecha de Ingreso: noviembre-2014
Ubicación: Madrid
Mensajes: 81
Antigüedad: 10 años, 1 mes
Puntos: 1
Doble loop ( triple según se mire) con promises y await, para asincronía

Saludos.
Es mi primera incursión con las promesas y después de tantas horas "prometo no prometer nada" porque vaya lío. :)
Quiero imprimir consecutivamente en la consola 3 veces del 0 al 5 y del 0a al 5a. Es decir: 012345-0a1a2a3a4a5a y 012345-0a1a2a3a4a5a y 012345-0a1a2a3a4a5a.
He conseguido que imprima el bloque completo sin que los dos bluces se superpongan mediante este código:
Código:
(async function loop(){
	for(var i=0; i < 6; i++){
		await new Promise(function(resolve){
			setTimeout(function(){
				resolve();
			}, 500);
			console.log(i);
		});
	}
})().then(function(){
(async function loop(){
	for(var i=0; i < 6; i++){
		await new Promise(function(resolve){
			setTimeout(function(){
				resolve();
			}, 500);
			console.log(i+'a');
		});
	}
})();
Se imprime 012345-0a1a2a3a4a5a.
Ahora quiero que lo haga 3 veces con este código:
Código:
(async function loop(){
	for(var x=0;x<3;x++){
		await new Promise(function(resolve){
			setTimeout(function(){
				//resolve();
			}, 500);
			console.log('x=' +x);
			(async function loop(){
				for(var i=0; i < 6; i++){
					await new Promise(function(resolve){
						setTimeout(function(){
							resolve();
						}, 500);
						console.log(i);
					});
				}
			})().then(function(){
				(async function loop(){
					for(var i=0; i < 6; i++){
						await new Promise(function(resolve){
							setTimeout(function(){
								resolve();
							}, 500);
							console.log(i + 'a');
						});
					}
				})();
			});
			//resolve();
		});
	}
})();
Como podéis ver en rojo no sé dónde poner el resolve de la primera promesa.
Aunque puede ser que no sea ese el problema. Ya estoy perdido.
Gracias por adelantado.