index.html 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  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. </head>
  8. <body>
  9. <script>
  10. //-------------------fetch basic
  11. // let DOM = document.body;
  12. // fetch('https://swapi.py4e.com/api/people/1/')
  13. // .then(res => res.json(),
  14. // err => console.log("ERROR"))
  15. // .then(luke => createTable(DOM, luke));
  16. // function createTable(DOM, JSON) {
  17. // console.log(DOM, JSON);
  18. // const tableEl = document.createElement("table");
  19. // tableEl.border = 1;
  20. // for(let [key, value] of Object.entries(JSON)) {
  21. // createTr(key,value);
  22. // }
  23. // DOM.append(tableEl);
  24. // function createTr(td1,td2) {
  25. // const trEl = document.createElement("tr");
  26. // const td1El = document.createElement("td");
  27. // const td2El = document.createElement("td");
  28. // td1El.innerHTML = td1;
  29. // if(typeof td2 ==="object") {
  30. // const ulEl = document.createElement("ul");
  31. // for(let value of td2) {
  32. // const liEl = document.createElement("li");
  33. // liEl.innerText = value;
  34. // ulEl.appendChild(liEl);
  35. // }
  36. // td2El.appendChild(ulEl);
  37. // } else {
  38. // td2El.innerHTML = td2;
  39. // }
  40. // trEl.append(td1El,td2El);
  41. // tableEl.append(trEl);
  42. // }
  43. // }
  44. //-------------------fetch improved
  45. // let DOM = document.body;
  46. // myFetch(DOM);
  47. // function myFetch(dom) {
  48. // fetch('https://swapi.py4e.com/api/people/1/')
  49. // .then(res => res.json(),
  50. // err => console.log("ERROR"))
  51. // .then(luke => createTable(dom, luke));
  52. // }
  53. // function createTable(DOM, JSON) {
  54. // console.log(DOM, JSON);
  55. // const tableEl = document.createElement("table");
  56. // tableEl.border = 1;
  57. // for(let [key, value] of Object.entries(JSON)) {
  58. // createTr(key,value);
  59. // }
  60. // DOM.append(tableEl);
  61. // function createTr(td1,td2) {
  62. // const trEl = document.createElement("tr");
  63. // const td1El = document.createElement("td");
  64. // const td2El = document.createElement("td");
  65. // td1El.innerHTML = td1;
  66. // if(typeof td2 ==="number") td2 = td2.toString();
  67. // if(typeof td2!=="object"&&!td2.indexOf("https://swapi.py4e.com/api/")) td2 = [td2];
  68. // if(typeof td2 ==="object") {
  69. // const ulEl = document.createElement("ul");
  70. // for(let value of td2) {
  71. // const liEl = document.createElement("li");
  72. // const buttonEl = document.createElement("button");
  73. // buttonEl.innerText = value;
  74. // buttonEl.onclick = () => {
  75. // buttonEl.hidden = true;
  76. // myFetch(buttonEl.parentElement);
  77. // }
  78. // liEl.appendChild(buttonEl);
  79. // ulEl.appendChild(liEl);
  80. // }
  81. // td2El.appendChild(ulEl);
  82. // } else {
  83. // td2El.innerHTML = td2;
  84. // }
  85. // trEl.append(td1El,td2El);
  86. // tableEl.append(trEl);
  87. // }
  88. // }
  89. //-------------------myfetch
  90. // myfetch('https://swapi.py4e.com/api/people/1/').then(luke => console.log(luke));
  91. // function myfetch(url){
  92. // return new Promise(function (resolve, reject){
  93. // const xhr = new XMLHttpRequest();
  94. // xhr.open('GET', url, true);
  95. // xhr.responseType = "json";
  96. // xhr.onload = function(){
  97. // if (xhr.status == 200){
  98. // resolve(xhr.response);
  99. // }
  100. // else {
  101. // reject(`ERROR ${xhr.status} - ${xhr.statusText}`);
  102. // }
  103. // }
  104. // xhr.onerror = () => reject(`ERROR ${xhr.status} - ${xhr.statusText}`);
  105. // xhr.send();
  106. // })
  107. // }
  108. //-------------------race
  109. Promise.race([myfetch('https://swapi.py4e.com/api/people/1/'),delay(30)]).then((value) => console.log(value));
  110. function myfetch(url){
  111. return new Promise(function (resolve, reject){
  112. const xhr = new XMLHttpRequest();
  113. xhr.open('GET', url, true);
  114. xhr.responseType = "json";
  115. xhr.onload = function(){
  116. if (xhr.status == 200){
  117. resolve(xhr.response);
  118. }
  119. else {
  120. reject(`ERROR ${xhr.status} - ${xhr.statusText}`);
  121. }
  122. }
  123. xhr.onerror = () => reject(`ERROR ${xhr.status} - ${xhr.statusText}`);
  124. xhr.send();
  125. })
  126. }
  127. function delay(ms) {
  128. return new Promise(function(resolve,reject) {
  129. setTimeout(resolve,ms,"delay");
  130. })
  131. }
  132. </script>
  133. </body>
  134. </html>