script.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. //Async/Await Homework 2
  2. const delay = ms => new Promise(ok => setTimeout(() => ok(ms), ms))
  3. //Используя асинхронную функцию и бесконечный цикл, просимулируйте светофор:
  4. /* async function trafficLight(){
  5. while (true){
  6. document.querySelector('.green').style.backgroundColor = 'green';
  7. document.querySelector('.red').style.backgroundColor = '';
  8. await delay(3000);
  9. document.querySelector('.green').style.backgroundColor = '';
  10. document.querySelector('.yellow').style.backgroundColor = 'yellow';
  11. await delay(500)
  12. document.querySelector('.yellow').style.backgroundColor = '';
  13. document.querySelector('.red').style.backgroundColor = 'red';
  14. await delay(2000)
  15. }
  16. }
  17. trafficLight(); */
  18. //Stage 2
  19. //Сделайте trafficLight более универсальной - добавьте в параметры DOM-элемент для отображения,
  20. //а так же время работы каждого цвета
  21. async function trafficLight(rootElClass, greenDelay, redDelay, yellowDelay){
  22. let root = document.querySelector(rootElClass);
  23. for (let i = 0; i <3; i++){
  24. let div = document.createElement('div');
  25. div.style.backgroundColor = 'black';
  26. root.append(div);
  27. }
  28. while (true){
  29. root.children[0].style.backgroundColor = 'green';
  30. root.children[2].style.backgroundColor = '';
  31. await delay(greenDelay);
  32. root.children[1].style.backgroundColor = 'yellow';
  33. root.children[0].style.backgroundColor = '';
  34. await delay(redDelay)
  35. root.children[2].style.backgroundColor = 'red';
  36. root.children[1].style.backgroundColor = '';
  37. await delay(yellowDelay)
  38. }
  39. }
  40. trafficLight('.wrapper', 1000, 800, 2000);
  41. //domEventPromise
  42. //Реализуйте промисифицированную функцию, которая резолвит промис по событию в DOM: