main.js 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287
  1. // Async/Await Homework 2
  2. // TrafficLight
  3. const delay = ms => new Promise(ok => setTimeout(() => ok(ms), ms))
  4. let green = document.querySelector('#green')
  5. let yellow = document.querySelector('#yellow')
  6. let red = document.querySelector('#red')
  7. async function trafficLight() {
  8. while (true) {
  9. greenPlay()
  10. await delay(8000)
  11. yellowPlay()
  12. await delay(3000)
  13. redPlay()
  14. await delay(8000)
  15. yellowPlay()
  16. await delay(3000)
  17. }
  18. }
  19. function greenPlay() {
  20. remove()
  21. green.style.background = 'green'
  22. }
  23. function yellowPlay() {
  24. remove()
  25. yellow.style.background = 'yellow'
  26. }
  27. function redPlay() {
  28. remove()
  29. red.style.background = 'red'
  30. }
  31. function remove() {
  32. green.style.background = ''
  33. yellow.style.background = ''
  34. red.style.background = ''
  35. }
  36. trafficLight()
  37. // or
  38. // находим все классы
  39. // let circle = document.getElementsByClassName('circle')
  40. // // функция - счётчик counter
  41. // function counter(setCounterOne, setCounterTwo, classIndex0, classIndex1, classIndex2) {
  42. // // выводим счётчик
  43. // let timeoutId = setInterval(function () {
  44. // classIndex0.classList.add('circleBGColor1')
  45. // classIndex1.innerHTML = setCounterOne;
  46. // classIndex1.classList.add('circleColor1')
  47. // // очищаем счетчик и добавляем класс(желтый)
  48. // if(setCounterOne <= 3) {
  49. // classIndex1.innerHTML = ''
  50. // classIndex1.classList.add('circleBGColor2')
  51. // // мигание
  52. // setTimeout(function() {
  53. // classIndex0.classList.remove('circleBGColor1')
  54. // }, 500)
  55. // }
  56. // setCounterOne--
  57. // // при достижении нуля останавливаем таймер и удаляем клас(желтый и красный)
  58. // if (setCounterOne == 0) {
  59. // clearInterval(timeoutId)
  60. // classIndex1.classList.remove('circleBGColor2', 'circleColor1')
  61. // classIndex0.classList.remove('circleBGColor1')
  62. // let timeId = setInterval(function() {
  63. // // добавляем класс(зелёный)
  64. // classIndex2.classList.add('circleBGColor3')
  65. // classIndex1.innerHTML = setCounterTwo
  66. // classIndex1.classList.add('circleColor2')
  67. // // добавляем второй счётчик
  68. // if(setCounterTwo <= 3) {
  69. // classIndex1.innerHTML = ''
  70. // classIndex1.classList.add('circleBGColor2')
  71. // // мигание
  72. // setTimeout(function() {
  73. // classIndex2.classList.remove('circleBGColor3')
  74. // }, 500)
  75. // }
  76. // // при достижении нуля останавливаем таймер и удаляем клас(желтый и зеленый)
  77. // if (setCounterTwo == 0) {
  78. // clearInterval(timeoutId)
  79. // classIndex1.classList.remove('circleBGColor2', 'circleColor3')
  80. // classIndex2.classList.remove('circleBGColor3')
  81. // }
  82. // // подготовка счётчика к новому циклу
  83. // if(setCounterTwo == 0) {
  84. // clearInterval(timeId)
  85. // classIndex1.classList.remove('circleColor2')
  86. // }
  87. // setCounterTwo--
  88. // }, 1000)
  89. // }
  90. // },1000)
  91. // }
  92. // // функция - подсчет таймаутов
  93. // let totalCounter;
  94. // function sumTimeout(counterOne, counterTwo) {
  95. // let sumCounterOne = counterOne * 1000
  96. // let sumCounterTwo = counterTwo * 1000
  97. // totalCounter = (sumCounterOne + sumCounterTwo) + 1000
  98. // return totalCounter
  99. // }
  100. // // рекурсия setTimeout
  101. // setTimeout(function restartCounter() {
  102. // // счётчик
  103. // let addCounterOne = 8
  104. // let addCounterTwo = 8
  105. // // вызов подсчет таймаутов
  106. // sumTimeout(addCounterOne, addCounterTwo)
  107. // // вызов светофора counter( первый счётчик , второй счётчик, класс с индексом [0], класс с индексом [1], класс с индексом [2])
  108. // counter(addCounterOne, addCounterTwo, circle[0], circle[1], circle[2])
  109. // setTimeout(restartCounter, totalCounter)
  110. // },100)
  111. // domEventPromise
  112. // const domEventPromise = function (element, eventName) {
  113. // return new Promise(function(resolve, reject) {
  114. // let func
  115. // element.addEventListener(eventName, func = (event) => {
  116. // resolve(event)
  117. // element.removeEventListener(eventName, func)
  118. // })
  119. // })
  120. // }
  121. // PedestrianTrafficLight
  122. // const delay = ms => new Promise(ok => setTimeout(() => ok(ms), ms))
  123. // let red = document.querySelector('#red')
  124. // let green = document.querySelector('#green')
  125. // let btn = document.querySelector('#btn')
  126. // async function PedestrianTrafficLight() {
  127. // while (true) {
  128. // redPlay()
  129. // await Promise.race([delay(8000), domEventPromise(btn,'click')])
  130. // greenPlay()
  131. // await delay(8000)
  132. // }
  133. // }
  134. // function redPlay() {
  135. // remove()
  136. // red.style.background = 'red'
  137. // }
  138. // function greenPlay() {
  139. // remove()
  140. // green.style.background = 'green'
  141. // }
  142. // function remove() {
  143. // red.style.background = ''
  144. // green.style.background = ''
  145. // }
  146. // PedestrianTrafficLight()
  147. // btn.addEventListener('click', btnClick)
  148. // async function btnClick() {
  149. // btn.disabled = true
  150. // await delay(12000)
  151. // btn.disabled = false
  152. // }
  153. // // // or
  154. // // находим все классы
  155. // let round = document.getElementsByClassName('round')
  156. // // функция - счётчик counter
  157. // function counter(setCountOne, setCountTwo, Index0, Index1) {
  158. // // выводим счётчик
  159. // let timeoutId = setInterval(function() {
  160. // Index0.classList.add('roundBGColor1')
  161. // Index0.innerHTML = setCountOne
  162. // Index0.classList.add('roundColor1')
  163. // if(setCountOne <= 3) {
  164. // // мигание
  165. // setTimeout(function() {
  166. // Index0.innerHTML = ''
  167. // Index0.classList.remove('roundBGColor1')
  168. // }, 500)
  169. // }
  170. // setCountOne--
  171. // // при достижении нуля останавливаем таймер и удаляем класс (красный)
  172. // if (setCountOne == 0) {
  173. // clearInterval(timeoutId)
  174. // Index0.classList.remove('roundBGColor1')
  175. // let timeId = setInterval(function() {
  176. // Index1.innerHTML = setCountTwo
  177. // Index1.classList.add('roundColor2')
  178. // // добавляем класс(зелёный)
  179. // Index1.classList.add('roundBGColor3')
  180. // // добавляем второй счётчик
  181. // if(setCountTwo <= 3) {
  182. // // мигание
  183. // setTimeout(function() {
  184. // Index1.classList.remove('roundBGColor3')
  185. // }, 500)
  186. // }
  187. // // при достижении нуля останавливаем таймер и удаляем класc (зеленый)
  188. // if (setCountTwo == 0) {
  189. // Index1.innerHTML = ''
  190. // clearInterval(timeoutId)
  191. // Index1.classList.remove('roundBGColor3')
  192. // }
  193. // // подготовка счётчика к новому циклу
  194. // if(setCountTwo == 0) {
  195. // clearInterval(timeId)
  196. // }
  197. // setCountTwo--
  198. // }, 1000)
  199. // }
  200. // },1000)
  201. // }
  202. // let totalCounter
  203. // function sumTimeout(countOne, countTwo) {
  204. // let sumCountOne = countOne * 1000
  205. // let sumCountTwo = countTwo * 1000
  206. // totalCounter = (sumCountOne + sumCountTwo) + 1000
  207. // return totalCounter
  208. // }
  209. // setTimeout(function restartCounter() {
  210. // let addCountOne = 8
  211. // let addCountTwo = 8
  212. // sumTimeout(addCountOne, addCountTwo)
  213. // counter(addCountOne, addCountTwo, round[0], round[1])
  214. // setTimeout(restartCounter, totalCounter)
  215. // },100)
  216. // function Dis(el,tm) {
  217. // el.disabled = true
  218. // Dis.obj = el
  219. // setTimeout('Dis.obj.disabled = false;', tm * 1000)
  220. // }
  221. // смену цвета по нажатию кнопки долго думала как реализовать, но пока еще в процессе - решила сдать уже так
  222. // speedtest
  223. // async function speedtest(getPromise, count, parallel = 1) {
  224. // let t1 = performance.now()
  225. // for (let i = 0; i < count; i++) {
  226. // let arrPromise = []
  227. // for (let j = 0; j < parallel; j++) {
  228. // arrPromise.push(getPromise())
  229. // }
  230. // await Promise.all(arrPromise)
  231. // }
  232. // let t2 = performance.now()
  233. // let duration = t2 - t1
  234. // let querySpeed = count / duration
  235. // let queryDuration = duration / count
  236. // let parallelSpeed = (count * parallel) / duration
  237. // let parallelDuration = duration / (count * parallel)
  238. // return {
  239. // duration,
  240. // querySpeed, //средняя скорость одного запроса
  241. // queryDuration, //
  242. // parallelSpeed,
  243. // parallelDuration
  244. // }
  245. // }
  246. // speedtest(() => delay(1000), 10, 10 ).then(result => console.log(result))
  247. // // {duration: 10000,
  248. // // querySpeed: 0.001, //1 тысячная запроса за миллисекунду
  249. // // queryDuration: 1000, //1000 миллисекунд на один реальный запрос в среднем
  250. // // parallelSpeed: 0.01 // 100 запросов за 10000 миллисекунд
  251. // // parallelDuration: 100 // 100 запросов за 10000 миллисекунд
  252. // speedtest(() => fetch('http://swapi.dev/api/people/1').then(res => res.json()), 10, 5)
  253. //проверяла результат работы раскомментируя по одному блоку кода с заданием js/html