12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- const delay = ms => new Promise(ok => setTimeout(() => ok(ms), ms))
- async function changeColor(color, duration, div) {
- div.style.background = color;
- await delay(duration);
- div.style.background = 'gray';
- }
- async function trafficLight(){
- while (true){
- await changeColor('green', 2000, green)
- await changeColor('yellow', 1000, yellow)
- await changeColor('red', 3000, red)
- }
- }
- trafficLight()
- function domEventPromise(element, eventName) {
- return new Promise(function(resolve, reject) {
- let listener = function (event) {
- element.removeEventListener(eventName, listener)
- resolve(event)
- if(event) {
- element.setAttribute("disabled", "disabled");
- delay(5000).then(result => element.removeAttribute("disabled", "disabled"))
-
- }
- }
- element.addEventListener(eventName, listener)
- })
- }
- async function changeColorPedestrian(color, duration, div) {
- div.style.background = color;
- await delay(duration);
- }
- async function pedestrianTrafficLight(){
- while (true){
- Promise.race([
- domEventPromise(btn, 'click').then( result => {
- changeColorPedestrian('green', 2000, light)
- }),
- await changeColorPedestrian('green', 2000, light),
- await changeColorPedestrian('red', 3000, light)
- ])
- }
- }
- pedestrianTrafficLight()
- ///////////////////////////////////////////////
- //speedtest
- async function speedtest(getPromise, count, parallel = 1) {
- let firstTime = performance.now();
- for (let i = count; i > 0; i--) {
- let promiseArr = [];
- for (let j = parallel; j > 0; j--) {
- promiseArr.push(getPromise())
- }
- console.log(promiseArr);
- await Promise.all(promiseArr);
- }
- let duration = performance.now() - firstTime;
- let parallelDuration = duration / (parallel*count);
- let parallelSpeed = (parallel*count) / duration;
- let queryDuration = duration / count;
- let querySpeed = 1 / queryDuration;
- return {
- duration,
- querySpeed, //средняя скорость одного запроса
- queryDuration,
- parallelSpeed,
- parallelDuration
- }
- }
- speedtest(() => delay(1000), 10, 10).then((result) => console.log(result));
- speedtest(() => fetch('http://swapi.dev/api/people/1').then(res => res.json()), 10, 5).then(result => console.log(result))
|