|
@@ -0,0 +1,82 @@
|
|
|
+// task fetchbasic
|
|
|
+// &&
|
|
|
+// task fetch improved
|
|
|
+
|
|
|
+const wrapper = document.getElementById("wrapper");
|
|
|
+
|
|
|
+fetch("https://swapi.dev/api/people/1/")
|
|
|
+ .then((res) => res.json())
|
|
|
+ .then((luke) => creatTable(luke, wrapper));
|
|
|
+
|
|
|
+function creatTable(data, dom) {
|
|
|
+ let table = document.createElement("table");
|
|
|
+ dom.appendChild(table);
|
|
|
+ let html = "";
|
|
|
+ for (let key in data) {
|
|
|
+ html += `<tr>`;
|
|
|
+ html += `<td>${key}</td>`;
|
|
|
+ if (Array.isArray(data[key])) {
|
|
|
+ html += `<td>`;
|
|
|
+ data[key].forEach((element) => {
|
|
|
+ html += `<button>${element}</button>`;
|
|
|
+ });
|
|
|
+ html += `</td>`;
|
|
|
+ } else {
|
|
|
+ if (isNaN(data[key]) && data[key].includes("https://")) {
|
|
|
+ html += `<td><button>${data[key]}</button></td>`;
|
|
|
+ } else {
|
|
|
+ html += `<td>${data[key]}</td>`;
|
|
|
+ html += `</tr>`;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ table.innerHTML = html;
|
|
|
+ document.querySelectorAll("button").forEach((btn) => {
|
|
|
+ btn.addEventListener("click", openNewTable);
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
+function openNewTable(event) {
|
|
|
+ const url = event.target.innerText;
|
|
|
+ fetch(url)
|
|
|
+ .then((res) => res.json())
|
|
|
+ .then((json) => creatTable(json, wrapper));
|
|
|
+}
|
|
|
+
|
|
|
+// Task myfetch
|
|
|
+
|
|
|
+const apiUrl = "https://swapi.dev/api/people/1/";
|
|
|
+function myfetch(url) {
|
|
|
+ return new Promise(function (resolve, reject) {
|
|
|
+ const xhr = new XMLHttpRequest();
|
|
|
+ xhr.open("get", url, true);
|
|
|
+ xhr.send();
|
|
|
+
|
|
|
+ xhr.onload = function () {
|
|
|
+ if (xhr.status === 200) {
|
|
|
+ resolve(JSON.parse(xhr.response));
|
|
|
+ } else {
|
|
|
+ reject(xhr.status);
|
|
|
+ }
|
|
|
+ };
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+const response = myfetch(apiUrl);
|
|
|
+response.then(
|
|
|
+ (data) => {
|
|
|
+ console.log(data);
|
|
|
+ },
|
|
|
+ (data) => {
|
|
|
+ console.log(data);
|
|
|
+ }
|
|
|
+);
|
|
|
+
|
|
|
+// Task race
|
|
|
+
|
|
|
+const delay = setTimeout(() => {
|
|
|
+ console.log('Done waiting');
|
|
|
+}, Math.floor(Math.random() * 7000));
|
|
|
+
|
|
|
+Promise.race([delay, response])
|