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
}
]
Комментарии
Отправить комментарий