単純なAIを実行し、一連のアクションを実装し、前のアクションが終了するのを待ってから、次のアクションを実行したい
約束して
私自身の投稿を参照し、約束についての私自身の理解を記録してから[1]
達成する
直接コーディング
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.'))
})