Browse Source

HW<12> done

Illia Kozyr 1 year ago
parent
commit
935c790a08
1 changed files with 150 additions and 0 deletions
  1. 150 0
      HW 12/index.html

+ 150 - 0
HW 12/index.html

@@ -0,0 +1,150 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+</head>
+<body>
+    <script>
+//-------------------fetch basic
+
+// let DOM = document.body;
+// fetch('https://swapi.py4e.com/api/people/1/')
+//   .then(res => res.json(),
+//         err => console.log("ERROR"))
+//     .then(luke => createTable(DOM, luke));
+
+// function createTable(DOM, JSON) {
+//     console.log(DOM, JSON);
+//     const tableEl = document.createElement("table");
+//     tableEl.border = 1;
+
+//     for(let [key, value] of Object.entries(JSON)) {
+//         createTr(key,value);
+//     }
+
+//     DOM.append(tableEl);
+
+//     function createTr(td1,td2) {
+//         const trEl = document.createElement("tr");
+//         const td1El = document.createElement("td");
+//         const td2El = document.createElement("td");
+//         td1El.innerHTML = td1;
+//         if(typeof td2 ==="object") {
+//             const ulEl = document.createElement("ul");
+//             for(let value of td2) {
+//                 const liEl = document.createElement("li");
+//                 liEl.innerText = value;
+//                 ulEl.appendChild(liEl);
+//             }
+//             td2El.appendChild(ulEl);
+//         } else {
+//             td2El.innerHTML = td2;  
+//         }
+//         trEl.append(td1El,td2El);
+//         tableEl.append(trEl);
+//     }
+
+// }
+
+//-------------------fetch improved
+// let DOM = document.body;
+// myFetch(DOM);
+
+// function myFetch(dom) {
+// fetch('https://swapi.py4e.com/api/people/1/')
+//   .then(res => res.json(),
+//         err => console.log("ERROR"))
+//     .then(luke => createTable(dom, luke));
+// }
+
+// function createTable(DOM, JSON) {
+//     console.log(DOM, JSON);
+//     const tableEl = document.createElement("table");
+//     tableEl.border = 1;
+//     for(let [key, value] of Object.entries(JSON)) {
+//         createTr(key,value);
+//     }
+//     DOM.append(tableEl);
+
+//     function createTr(td1,td2) {
+//         const trEl = document.createElement("tr");
+//         const td1El = document.createElement("td");
+//         const td2El = document.createElement("td");
+//         td1El.innerHTML = td1;
+//         if(typeof td2 ==="number") td2 = td2.toString();
+//         if(typeof td2!=="object"&&!td2.indexOf("https://swapi.py4e.com/api/")) td2 = [td2];
+//         if(typeof td2 ==="object") {
+//             const ulEl = document.createElement("ul");
+//             for(let value of td2) {
+//                 const liEl = document.createElement("li");
+//                 const buttonEl = document.createElement("button");
+//                 buttonEl.innerText = value;
+//                 buttonEl.onclick = () => {
+//                     buttonEl.hidden = true;
+//                     myFetch(buttonEl.parentElement);
+//                 }
+//                 liEl.appendChild(buttonEl);
+//                 ulEl.appendChild(liEl);
+//             }
+//             td2El.appendChild(ulEl);
+//         } else {
+//             td2El.innerHTML = td2;
+//         }
+//         trEl.append(td1El,td2El);
+//         tableEl.append(trEl);
+//     }
+// }
+//-------------------myfetch
+
+// myfetch('https://swapi.py4e.com/api/people/1/').then(luke => console.log(luke));
+
+// function myfetch(url){
+//     return new Promise(function (resolve, reject){
+//         const xhr = new XMLHttpRequest();
+//         xhr.open('GET', url, true);
+//         xhr.responseType = "json";
+//         xhr.onload = function(){
+//             if (xhr.status == 200){
+//                 resolve(xhr.response);
+//             }
+//             else {
+//                 reject(`ERROR ${xhr.status} - ${xhr.statusText}`);
+//             }
+//         }
+//         xhr.onerror = () => reject(`ERROR ${xhr.status} - ${xhr.statusText}`);
+//         xhr.send();
+//     })
+// }
+//-------------------race
+
+Promise.race([myfetch('https://swapi.py4e.com/api/people/1/'),delay(30)]).then((value) => console.log(value));
+
+
+function myfetch(url){
+    return new Promise(function (resolve, reject){
+        const xhr = new XMLHttpRequest();
+        xhr.open('GET', url, true);
+        xhr.responseType = "json";
+        xhr.onload = function(){
+            if (xhr.status == 200){
+                resolve(xhr.response);
+            }
+            else {
+                reject(`ERROR ${xhr.status} - ${xhr.statusText}`);
+            }
+        }
+        xhr.onerror = () => reject(`ERROR ${xhr.status} - ${xhr.statusText}`);
+        xhr.send();
+    })
+}
+
+function delay(ms) {
+    return new Promise(function(resolve,reject) {
+        setTimeout(resolve,ms,"delay");
+    })
+}
+    </script>
+</body>
+</html>