Я хочу разрешить функцию updateGuider
из функции речи следующим образом:
tutor();
async function tutor(){
console.log('tutor function initiated..');
// wait until updateGuider function resolves
await updateGuider('default');
// The expected result is to reach this line after updateGuider resolves, but we can't so far!
console.log('Procccess Ends');
}
// Not working unless we use var instead of let?!
let updateGuiderResolve;
function updateGuider(state){
return new Promise((resolve) => {
updateGuiderResolve = resolve;
switch(state) {
case 'default':
speak();
break;
}
});
}
async function speak(){
console.log('entered speak')
setTimeout(function(){
//after 5 seconds we resolve the updateGuider from speak function
updateGuiderResolve();
},5000)
}
Как видите, код не работает (ожидаемый результат - console.log('Procccess Ends')
через 5 секунд);
Я заметил, что если я изменю let updateGuiderResolve
на var updateGuiderResolve
, все будет работать отлично! Почему?