12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- // 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])
|