commit 9a85838e3f3fad3ec88458be05ef15d8324e30bc Author: baiobelfer Date: Wed Apr 2 14:45:04 2025 +0200 async diff --git a/data/data.json b/data/data.json new file mode 100644 index 0000000..119ffcf --- /dev/null +++ b/data/data.json @@ -0,0 +1,3 @@ +{ + "name":"Jan" +} diff --git a/index.html b/index.html new file mode 100644 index 0000000..778740e --- /dev/null +++ b/index.html @@ -0,0 +1,15 @@ + + + + + + Document + + + + + +
hello
+ + + \ No newline at end of file diff --git a/js/script.js b/js/script.js new file mode 100644 index 0000000..84cc1ed --- /dev/null +++ b/js/script.js @@ -0,0 +1,52 @@ +const el = document.querySelector('#ele'); + +function parse(data) { +return new Promise((resolve, reject) => { + const name = data.name; + if (!name || !['Jan', 'Zuzia', 'Jakub'].includes(name)) { + reject(new Error('Invalid name in JSON')); + } else { + resolve(name); + } +}); +} + +function delay(ms) { + return new Promise(resolve => setTimeout(resolve, ms)); +} + + +function f1 (url='./data/data.json') { + + return fetch (url) + .then( (res) => { + + if (!res.ok) { + throw new Error(`HTTP error! status: ${res.status}`); + } + + return res.json(); + }) + .then ( (data) => { + + return parse(data); + // el.textContent = parse(data); + + console.log ("ok"); + }) + .then((name) => { + + // Dodajemy opóźnienie przed aktualizacją treści elementu + return delay(5000).then(() => name); // Opóźnienie 2 sekundy + }) + .then ((name)=>{ + console.log("5s"); + el.textContent = name; + }) + .catch(error => { + console.error('Error http request or parsing JSON:', error); + }); + +} + +f1()