index.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. // Предварительная подготовка:
  2. // Создать файл с данными в формате JSON
  3. // Это должен быть массив объектов с двумя свойствами: title и ref
  4. // title - название картинки
  5. // ref - ссылка на картинку
  6. // Задание:
  7. // Загрузить данные из JSON-файла
  8. // Распарсить данные в массив
  9. // Вывести на страницу картинки и подписи к ним
  10. var req = new XMLHttpRequest();
  11. req.responseType = 'json';
  12. req.open('GET', 'one.json', true);
  13. req.onload = function() {
  14. var jsonResponse = req.response;
  15. jsonResponse.forEach(element => {
  16. document.body.appendChild(document.createElement('img')).src = element.ref;
  17. //element.style.width = 600;
  18. document.body.appendChild(document.createElement('p')).innerText = element.title;
  19. });
  20. };
  21. req.send(null);
  22. // Вариант с fetch
  23. fetch('two.json')
  24. .then(response => response.json())
  25. .then(jsonResponse => jsonResponse.forEach(element => {
  26. document.body.appendChild(document.createElement('img')).src = element.ref;
  27. document.body.appendChild(document.createElement('p')).innerText = element.title;
  28. }));
  29. // Исходные данные
  30. // var messages = [
  31. // "backspace",
  32. // "enter",
  33. // "shift",
  34. // "control",
  35. // "delete",
  36. // "space",
  37. // "subtract"
  38. // ]
  39. // messages.getKey = () => {
  40. // var key = new Date().toLocaleString().split(", ")[1]
  41. // return log [ key ] ? log [ key + "[2]" ] ? key + "[3]" : key + "[2]" : key
  42. // }
  43. // var log = {}
  44. // sendMessage
  45. // var sendMessage = message => new Promise (
  46. // resolve => setTimeout (
  47. // () => resolve ( message ),
  48. // Math.random () * 7000
  49. // )
  50. // )
  51. // Задача: напилить код, который вызывает функцию sendMessage для каждого элемента массива messages и логирует полученные сообщения в объекте log следующим образом:
  52. // log
  53. // {
  54. // 22:25:57: "backspace"
  55. // 22:25:58: "shift"
  56. // 22:25:59: "subtract"
  57. // 22:25:59[2]: "enter"
  58. // 22:25:59[3]: "delete"
  59. // 22:26:01: "control"
  60. // 22:26:01[2]: "space"
  61. // }
  62. var messages = [
  63. "backspace",
  64. "enter",
  65. "shift",
  66. "control",
  67. "delete",
  68. "space",
  69. "subtract"
  70. ]
  71. messages.getKey = () => {
  72. let key = new Date().toLocaleTimeString(), x = 0
  73. while (log [`${key}[${x}]` ]) { x++ }
  74. return `${key}[${x}]`
  75. }
  76. var log = {}
  77. var sendMessage = message => new Promise (
  78. resolve => setTimeout (
  79. () => resolve ( message ),
  80. Math.random () * 7000
  81. )
  82. );
  83. messages.forEach (
  84. ( message, index, arr ) => sendMessage ( message )
  85. .then (
  86. mess => Object.assign ( log,
  87. { [ arr.getKey() ] : message }
  88. ),
  89. console.log(message)
  90. )
  91. );
  92. // Изменим условие предыдущего задания
  93. // Массив messages, объект log и функция sendMessage остаются теми же
  94. // Немного изменится метод getKey:
  95. // messages.getKey = () => new Date().toLocaleString().split(", ")[1]
  96. // Нужно напилить код рекурсивной функции recursive, которая вызывает sendMessage поочередно с каждым элементом массива messages, но только после того, как предыдущий месседж будет залогирован в объекте log
  97. var messages = [
  98. "backspace",
  99. "enter",
  100. "shift",
  101. "control",
  102. "delete",
  103. "space",
  104. "subtract"
  105. ]
  106. messages.getKey = () => new Date().toLocaleTimeString()
  107. var log = {}
  108. var sendMessage = message => new Promise (
  109. resolve => setTimeout (
  110. () => resolve ( message ),
  111. Math.random () * 7000
  112. )
  113. );
  114. var sendAll = () => {
  115. var index = 0
  116. function recursive () {
  117. }
  118. recursive ()
  119. }
  120. sendAll()