|
@@ -0,0 +1,90 @@
|
|
|
+const delay = ms => new Promise(ok => setTimeout(() => ok(ms), ms));
|
|
|
+
|
|
|
+async function trafficLight(timeRed, timeYellow, timeGreen){
|
|
|
+ while (true){
|
|
|
+ green.classList.remove('active');
|
|
|
+ red.classList.add('active');
|
|
|
+ await delay(timeRed);
|
|
|
+
|
|
|
+ red.classList.remove('active');
|
|
|
+ yellow.classList.add('active');
|
|
|
+ await delay(timeYellow);
|
|
|
+
|
|
|
+ yellow.classList.remove('active');
|
|
|
+ green.classList.add('active');
|
|
|
+ await delay(timeGreen);
|
|
|
+ }
|
|
|
+}
|
|
|
+trafficLight(3000, 1000, 3000);
|
|
|
+
|
|
|
+function domEventPromise(element, eventName) {
|
|
|
+ return new Promise(function(resolve, reject) {
|
|
|
+ element.addEventListener(eventName, (e) => resolve(e.target));
|
|
|
+
|
|
|
+ element.removeEventListener(eventName, (e) => resolve(e.target));
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
+// domEventPromise(knopka, 'click')
|
|
|
+// .then( e => console.log('event click happens', e));
|
|
|
+
|
|
|
+//для пешеходов
|
|
|
+async function PedestrianTrafficLight(timeGreen, timeRed){
|
|
|
+ while (true){
|
|
|
+ red2.classList.remove('active');
|
|
|
+ green2.classList.add('active');
|
|
|
+ await delay(timeGreen);
|
|
|
+
|
|
|
+ green2.classList.remove('active');
|
|
|
+ red2.classList.add('active');
|
|
|
+ await delay(timeRed);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+PedestrianTrafficLight(3500, 3500);
|
|
|
+
|
|
|
+function clickBtn() {
|
|
|
+ domEventPromise(knopka, 'click')
|
|
|
+ .then( e => {
|
|
|
+ document.querySelectorAll('div[class*=circle]').forEach((el) => {
|
|
|
+ el.classList.remove('active');
|
|
|
+ })
|
|
|
+ green2.classList.add('active');
|
|
|
+ red.classList.add('active');
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
+setTimeout(clickBtn(), 2000);
|
|
|
+
|
|
|
+async function speedtest(getPromise, count,parallel = 1){
|
|
|
+ let promiseArr = [];
|
|
|
+ let date = new Date();
|
|
|
+ for(let pr = 0; pr < count; pr++) {
|
|
|
+ promiseArr[pr] = getPromise();
|
|
|
+ await Promise.all(promiseArr);
|
|
|
+ }
|
|
|
+ console.log(promiseArr);
|
|
|
+
|
|
|
+ let duration = new Date() - date;
|
|
|
+ let querySpeed = count / duration;
|
|
|
+ let queryDuration = duration / count;
|
|
|
+ let parallelSpeed = parallel / duration;
|
|
|
+ let parallelDuration = duration / parallel;
|
|
|
+
|
|
|
+ return {
|
|
|
+ duration: duration,
|
|
|
+ querySpeed: querySpeed, //средняя скорость одного запроса
|
|
|
+ queryDuration: queryDuration, //
|
|
|
+ parallelSpeed: parallelSpeed,
|
|
|
+ parallelDuration: parallelDuration
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+speedtest(() => delay(1000), 10, 10 ).then(result => console.log(result))
|
|
|
+// {duration: 10000,
|
|
|
+// querySpeed: 0.001, //1 тысячная запроса за миллисекунду
|
|
|
+// queryDuration: 1000, //1000 миллисекунд на один реальный запрос в среднем
|
|
|
+// parallelSpeed: 0.01 // 100 запросов за 10000 миллисекунд
|
|
|
+// parallelDuration: 100 // 100 запросов за 10000 миллисекунд
|
|
|
+speedtest(() => fetch('http://swapi.dev/api/people/1').then(res => res.json()), 10, 5)
|
|
|
+
|