main.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. const delay = ms => new Promise(ok => setTimeout(() => ok(ms), ms));
  2. async function trafficLight(timeRed, timeYellow, timeGreen){
  3. while (true){
  4. green.classList.remove('active');
  5. red.classList.add('active');
  6. await delay(timeRed);
  7. red.classList.remove('active');
  8. yellow.classList.add('active');
  9. await delay(timeYellow);
  10. yellow.classList.remove('active');
  11. green.classList.add('active');
  12. await delay(timeGreen);
  13. }
  14. }
  15. trafficLight(3000, 1000, 3000);
  16. function domEventPromise(element, eventName) {
  17. return new Promise(function(resolve, reject) {
  18. element.addEventListener(eventName, (e) => resolve(e.target));
  19. element.removeEventListener(eventName, (e) => resolve(e.target));
  20. });
  21. }
  22. // domEventPromise(knopka, 'click')
  23. // .then( e => console.log('event click happens', e));
  24. //для пешеходов
  25. async function PedestrianTrafficLight(timeGreen, timeRed){
  26. while (true){
  27. red2.classList.remove('active');
  28. green2.classList.add('active');
  29. await delay(timeGreen);
  30. green2.classList.remove('active');
  31. red2.classList.add('active');
  32. await delay(timeRed);
  33. }
  34. }
  35. PedestrianTrafficLight(3500, 3500);
  36. function clickBtn() {
  37. domEventPromise(knopka, 'click')
  38. .then( e => {
  39. document.querySelectorAll('div[class*=circle]').forEach((el) => {
  40. el.classList.remove('active');
  41. })
  42. green2.classList.add('active');
  43. red.classList.add('active');
  44. });
  45. }
  46. setTimeout(clickBtn(), 2000);
  47. async function speedtest(getPromise, count,parallel = 1){
  48. let promiseArr = [];
  49. let date = new Date();
  50. for(let pr = 0; pr < count; pr++) {
  51. promiseArr[pr] = getPromise();
  52. await Promise.all(promiseArr);
  53. }
  54. console.log(promiseArr);
  55. let duration = new Date() - date;
  56. let querySpeed = count / duration;
  57. let queryDuration = duration / count;
  58. let parallelSpeed = parallel / duration;
  59. let parallelDuration = duration / parallel;
  60. return {
  61. duration: duration,
  62. querySpeed: querySpeed, //средняя скорость одного запроса
  63. queryDuration: queryDuration, //
  64. parallelSpeed: parallelSpeed,
  65. parallelDuration: parallelDuration
  66. }
  67. }
  68. speedtest(() => delay(1000), 10, 10 ).then(result => console.log(result))
  69. // {duration: 10000,
  70. // querySpeed: 0.001, //1 тысячная запроса за миллисекунду
  71. // queryDuration: 1000, //1000 миллисекунд на один реальный запрос в среднем
  72. // parallelSpeed: 0.01 // 100 запросов за 10000 миллисекунд
  73. // parallelDuration: 100 // 100 запросов за 10000 миллисекунд
  74. speedtest(() => fetch('http://swapi.dev/api/people/1').then(res => res.json()), 10, 5)