Directorio de artículos
Quiero hacer una IA simple, implementar una secuencia de acciones y esperar a que termine la anterior antes de ejecutar la siguiente
Promesa y luego
Consulte mi propia publicación, grabé mi propia comprensión de la promesa y luego [1]
Lograr
Código directamente
var dramas = [
{
"time": 2000,
"func": function(sec){
console.log('function 1', new Date().toLocaleString());
return new Promise(resolve => {
// console.log(`1 waiting ${sec}s...`, new Date().toLocaleString());
setTimeout(() => resolve(1), sec);
});
},
},
{
"time": 3000,
"func": function(sec){
console.log('function 2', new Date().toLocaleString());
return new Promise(resolve => {
// console.log(`2 waiting ${sec}s...`, new Date().toLocaleString());
setTimeout(() => resolve(2), sec);
});
},
},
]
function doDrama(listDrama, index) {
return new Promise((resolve, reject) => {
if(index >= listDrama.length) {
return resolve({ done: true, data: "done"});
} else {
return resolve({ done: false });
}
})
.then(res => {
if(res.done) {
return Promise.resolve(res.data);
} else {
return listDrama[index].func(listDrama[index].time).then(()=>{
doDrama(listDrama, index+1);
})
}
});
}
doDrama(dramas, 0).then(res=>{
console.log('done.'))
})
Referencia
[1] Promise.then secuencia de llamada en cadena
[2] Cómo Promise implementa la recursividad