index.html 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  7. <title>Document</title>
  8. </head>
  9. <body>
  10. <div id="content"></div>
  11. <script>
  12. //FETCH BASIC
  13. // function drawTable(params = {}) {
  14. // let { data = {}, parent = document.body } = params;
  15. // let table = document.createElement("table");
  16. // table.border = 1;
  17. // parent.append(table);
  18. // for (let el in data) {
  19. // let tr = document.createElement("tr");
  20. // let th = document.createElement("th");
  21. // let td = document.createElement("td");
  22. // if (data[el].constructor.name === "Object") {
  23. // drawTable({ data: data[el], parent: td });
  24. // table.append(tr);
  25. // tr.append(th);
  26. // tr.append(td);
  27. // continue;
  28. // }
  29. // if (data[el].constructor.name === "Array") {
  30. // let tr = document.createElement("tr");
  31. // let th = document.createElement("th");
  32. // table.append(tr);
  33. // tr.append(th);
  34. // th.innerHTML = el;
  35. // th.colSpan = 2;
  36. // for (let item of data[el]) {
  37. // let tr = document.createElement("tr");
  38. // let td = document.createElement("td");
  39. // table.append(tr);
  40. // tr.append(td);
  41. // if (data[el].constructor.name === "Object") {
  42. // drawTable({ data: data[el], parent: td });
  43. // continue;
  44. // }
  45. // td.colSpan = 2;
  46. // td.innerHTML = item;
  47. // }
  48. // continue;
  49. // }
  50. // table.append(tr);
  51. // tr.append(th);
  52. // tr.append(td);
  53. // th.innerHTML = el;
  54. // td.innerHTML = data[el];
  55. // }
  56. // parent.append(table);
  57. // }
  58. // fetch("https://swapi.py4e.com/api/people/1/")
  59. // .then((res) => res.json())
  60. // .then((luke) => {
  61. // drawTable({ data: luke });
  62. // });
  63. //FETCH IMPROVED
  64. // function drawTable(params = {}) {
  65. // let { data = {}, parent = document.body } = params;
  66. // let table = document.createElement("table");
  67. // table.border = 1;
  68. // parent.append(table);
  69. // for (let [key, val] of Object.entries(data)) {
  70. // let tr = document.createElement("tr");
  71. // let th = document.createElement("th");
  72. // let td = document.createElement("td");
  73. // if (val.constructor.name === "Object") {
  74. // drawTable({ data: val, parent: td });
  75. // table.append(tr);
  76. // tr.append(th);
  77. // tr.append(td);
  78. // continue;
  79. // }
  80. // if (val.constructor.name === "Array") {
  81. // let tr = document.createElement("tr");
  82. // let th = document.createElement("th");
  83. // table.append(tr);
  84. // tr.append(th);
  85. // th.innerHTML = key;
  86. // th.colSpan = 2;
  87. // for (let value of val) {
  88. // let tr = document.createElement("tr");
  89. // let td = document.createElement("td");
  90. // table.append(tr);
  91. // tr.append(td);
  92. // if (value.match(/^https:\/\/swapi\.py4e\.com\/+/)) {
  93. // let btn = document.createElement("button");
  94. // btn.innerHTML = value;
  95. // btn.onclick = () => {
  96. // fetch(value)
  97. // .then((res) => res.json())
  98. // .then((luke) => {
  99. // drawTable({ data: luke });
  100. // });
  101. // };
  102. // td.colSpan = 2;
  103. // td.append(btn);
  104. // continue;
  105. // }
  106. // if (val.constructor.name === "Object") {
  107. // drawTable({ data: val, parent: td });
  108. // continue;
  109. // }
  110. // td.colSpan = 2;
  111. // td.innerHTML = value;
  112. // }
  113. // continue;
  114. // }
  115. // table.append(tr);
  116. // tr.append(th);
  117. // tr.append(td);
  118. // th.innerHTML = key;
  119. // if (val.constructor.name === "String" && val.match(/^https:\/\/swapi\.py4e\.com\/+/)) {
  120. // let btn = document.createElement("button");
  121. // btn.innerHTML = val;
  122. // btn.onclick = () => {
  123. // fetch(val)
  124. // .then((res) => res.json())
  125. // .then((data) => {
  126. // drawTable({ data: data });
  127. // });
  128. // };
  129. // td.append(btn);
  130. // continue;
  131. // }
  132. // td.innerHTML = val;
  133. // }
  134. // parent === document.body && (parent.innerHTML = "");
  135. // parent.append(table);
  136. // }
  137. // fetch("https://swapi.py4e.com/api/people/1/")
  138. // .then((res) => res.json())
  139. // .then((luke) => {
  140. // drawTable({ data: luke });
  141. // });
  142. //MYFETCH
  143. // function myfetch(url) {
  144. // return new Promise(function (resolve, reject) {
  145. // const xhr = new XMLHttpRequest();
  146. // xhr.open("get", url);
  147. // xhr.send();
  148. // xhr.onreadystatechange = (e) => {
  149. // if (xhr.readyState != 4) {
  150. // return;
  151. // }
  152. // if (xhr.status === 200) {
  153. // resolve(JSON.parse(xhr.responseText));
  154. // }
  155. // reject("some request error");
  156. // };
  157. // });
  158. // }
  159. // myfetch("https://swapi.py4e.com/api/people/1/").then(
  160. // (data) => console.log(data),
  161. // (err) => console.log("error ", err)
  162. // );
  163. //RACE
  164. // function myfetch(url) {
  165. // return new Promise(function (resolve, reject) {
  166. // const xhr = new XMLHttpRequest();
  167. // xhr.open("get", url);
  168. // xhr.send();
  169. // xhr.onreadystatechange = (e) => {
  170. // if (xhr.readyState != 4) {
  171. // return;
  172. // }
  173. // if (xhr.status === 200) {
  174. // resolve(JSON.parse(xhr.responseText));
  175. // }else{
  176. // reject("some request error");
  177. // }
  178. // };
  179. // });
  180. // }
  181. // const delay = (ms) => new Promise((ok) => setTimeout(() => ok(ms), ms));
  182. // const race = async () => {
  183. // let rez = await Promise.race([
  184. // delay(Math.random() * 20),
  185. // myfetch("https://swapi.py4e.com/api/people/1/"),
  186. // ]);
  187. // console.log(rez);
  188. // };
  189. </script>
  190. </body>
  191. </html>