JavaScript Async, Await (пример)

<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Async, Await</title>
</head>

<body>
<script>

// Обычный код с обычными промисами
// resolve (решать) возвращается, когда все в порядке
// reject (отклонять) возвращается, когда ошибка
function sleep(time){
    return new Promise((resolve, reject)=>{
        if (time < 500){
            reject(`Слишком мало сна!!!`);
        }
        setTimeout(() => resolve(`Спал ${time}`), time)
    })
}
// // Запускаем функцию по первому варианту

// sleep(1500).then(res=>{
//  console.log(res);
//  return sleep(1000);
// }).then(res => {
//  console.log(res);
//  return sleep(500);
// }).then(res => {
//  console.log(res);
//  return sleep(200);
// }).then(res =>{
//  console.log(res);
// }).catch(err =>{
//  console.log(err);
// })


// // Запускаем функцию по второму варианту Оптимизированный код Async, Await
const sleepSession = async () => {
    try{
        const sleep1 = await sleep(1500);
        console.log(sleep1);
        const sleep2 = await sleep(1000);
        console.log(sleep2);
        const sleep3 = await sleep(500);
        console.log(sleep3);
        const sleep4 = await sleep(200);
        console.log(sleep4);

    }catch(err){
        console.log('Err > ', err)
    }
}
sleepSession();


// Оптимизированный код Async, Await
// setInterval(()=>console.log(Date.now()), 1000);

async function getGitData(){
    try{
        const responce = await fetch('/info.csv');
        const data = await responce.json();
        return data;
    }catch (err){
        console.log('Error >>> ' , err)
    }
}
   
// Обязательно THEN тк ассинхронная функция возвращает Промис
// Или вызывать внутри самой функции!!!!
getGitData().then(render =>{    
        render.forEach((el)=>{
            console.log(el['name'], el['count'])
        })
    }).then(() => console.log("Конец")
);

</script>
</body>
       
</html>

info.csv::
[
    {
        "name": "Сергей Цветков",
        "count": 7
    },
    {
        "name": "Петр Иванов",
        "count": 25
    },
    {
        "name": "Василий Сталин",
        "count": 27
    }
]

Комментарии