main.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. //Task fetch basic
  2. // function receivInfoForLuck (dom, url) {
  3. // fetch(url)
  4. // .then(res => res.json())
  5. // .then(luke => {
  6. // console.log(luke);
  7. // const table = document.createElement('table');
  8. // table.style.border = '1px solid';
  9. // table.style.borderCollapse = 'collapse';
  10. // dom.append(table);
  11. // for (let [key, value] of Object.entries(luke)) {
  12. // const tr = document.createElement('tr');
  13. // const th = document.createElement('th');
  14. // th.style.border = '1px solid #000';
  15. // const td = document.createElement('td');
  16. // td.style.border = '1px solid #000';
  17. // td.style.width = '300px'
  18. // table.append(tr);
  19. // tr.appendChild(th).innerHTML = `${key}`;
  20. // tr.append(td);
  21. // if (value.constructor == Array) {
  22. // for (let index of value) {
  23. // const p = document.createElement('p');
  24. // td.appendChild(p).innerHTML = `${index}\n `;
  25. // }
  26. // }
  27. // if (value.constructor!== Array) {
  28. // td.innerHTML = `${value}`
  29. // }
  30. // }
  31. // })
  32. // }
  33. // receivInfoForLuck(document.body, 'https://swapi.dev/api/people/1/')
  34. // Task fetch improved
  35. // function receivInfoForLuck (dom, url) {
  36. // fetch(url)
  37. // .then(res => res.json())
  38. // .then(luke => {
  39. // console.log(luke);
  40. // const table = document.createElement('table');
  41. // table.style.border = '1px solid';
  42. // table.style.borderCollapse = 'collapse';
  43. // dom.append(table);
  44. // for (let [key, value] of Object.entries(luke)) {
  45. // const tr = document.createElement('tr');
  46. // const th = document.createElement('th');
  47. // th.style.border = '1px solid #000';
  48. // const td = document.createElement('td');
  49. // td.style.border = '1px solid #000';
  50. // td.style.width = '300px'
  51. // table.append(tr);
  52. // tr.appendChild(th).innerHTML = `${key}`;
  53. // tr.append(td);
  54. // let numberForButton = 1;
  55. // function createInput (value, buttonNumber) {
  56. // const input = document.createElement('input');
  57. // input.type = 'button';
  58. // input.value = `${buttonNumber}`;
  59. // td.appendChild(input);
  60. // numberForButton ++;
  61. // input.onclick = () => receivInfoForLuck(document.body, value);
  62. // }
  63. // if (value.constructor == Array) {
  64. // for (let index of value) {
  65. // if (typeof(index) !== 'string') {
  66. // const p = document.createElement('p');
  67. // td.appendChild(p).innerHTML = `${index}\n `;
  68. // }
  69. // else if (index.includes('https://swapi.dev/api/')) {
  70. // createInput(index, numberForButton);
  71. // }
  72. // else {
  73. // const p = document.createElement('p');
  74. // td.appendChild(p).innerHTML = `${index}\n `;
  75. // }
  76. // }
  77. // }
  78. // if (value.constructor!== Array) {
  79. // if (typeof(value) !== 'string') {
  80. // td.innerHTML = `${value}`;
  81. // }
  82. // else if (value.includes('https://swapi.dev/api/')) {
  83. // createInput(value, numberForButton);
  84. // }
  85. // else {
  86. // td.innerHTML = `${value}`;
  87. // }
  88. // }
  89. // }
  90. // })
  91. // }
  92. // receivInfoForLuck(document.body, 'https://swapi.dev/api/people/1/');
  93. //Task myfetch
  94. function myfetch(url){
  95. return new Promise(function (resolve, reject){
  96. const xhr = new XMLHttpRequest();
  97. xhr.open('GET', url);
  98. xhr.send();
  99. xhr.onload = function() {
  100. if (xhr.status != 200) {
  101. return reject(`Ошибка ${xhr.status}: ${xhr.statusText}`);
  102. } else {
  103. let value = JSON.parse(xhr.response);
  104. return resolve(value);
  105. }
  106. xhr.onerror = function() {
  107. return reject('Запрос не удался');
  108. };
  109. };
  110. })
  111. }
  112. // let a = myfetch('https://swapi.dev/api/people/1/');
  113. // a.then(res => console.log(res));
  114. //TASK race
  115. const delay = ms => new Promise(ok => setTimeout(() => ok(ms*Math.random()), ms))
  116. Promise.race([
  117. myfetch('https://swapi.dev/api/people/1/'),
  118. delay(600)
  119. ]).then(obj => console.log(obj));