main.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. const getGQL = url =>
  2. async (query, variables) => {
  3. try {
  4. let obj = await fetch(url, {
  5. method: 'POST',
  6. headers: {
  7. "Content-Type": "application/json"
  8. },
  9. body: JSON.stringify({ query, variables })
  10. })
  11. let a = await obj.json()
  12. for (const key in a) {
  13. for (const deepKey in a[key]) {
  14. return a[key][deepKey]
  15. }
  16. }
  17. return a
  18. }
  19. catch (error) {
  20. console.log('Что-то не так, Бро ' + error);
  21. }
  22. }
  23. const gql = getGQL('http://shop-roles.asmer.fs.a-level.com.ua/graphql');
  24. (async () => {
  25. console.log((await gql(`
  26. query NameForMe1($login:String, $password:String){
  27. login(login:$login, password:$password)
  28. }
  29. `, { login: 'Kabina', password: '12345' })))
  30. })()
  31. // //Светофор
  32. // const delay = ms => new Promise(ok => setTimeout(() => ok(ms), ms))
  33. // async function trafficLight(delayG, delayY, delayR) {
  34. // while (true) {
  35. // red.classList.remove('active')
  36. // green.classList.add('active')
  37. // await delay(delayG)
  38. // green.classList.remove('active')
  39. // yellow.classList.add('active')
  40. // await delay(delayY)
  41. // yellow.classList.remove('active')
  42. // red.classList.add('active')
  43. // await delay(delayR)
  44. // }
  45. // }
  46. // trafficLight(3000, 200, 3000,)
  47. // // Светофор Stage 2
  48. // function delay2(ms, el) {
  49. // return new Promise(ok => {
  50. // let count = ms / 1000;
  51. // (counter = (c) => {
  52. // el.classList.add('active')
  53. // el.innerText = count
  54. // if (count > 0) setTimeout(() => counter(count--), 1000);
  55. // else {
  56. // el.innerText = ''
  57. // el.classList.remove('active')
  58. // return ok()
  59. // }
  60. // })()
  61. // })
  62. // }
  63. // async function trafficLight2(delayG, delayY, delayR) {
  64. // while (true) {
  65. // await delay2(delayG, green2)
  66. // await delay2(delayY, yellow2)
  67. // await delay2(delayR, red2)
  68. // await delay2(delayY, yellow2)
  69. // }
  70. // }
  71. // trafficLight2(5000, 2000, 5000)
  72. // //domEventPromise
  73. // function domEventPromise(el, eventName) {
  74. // return new Promise(resolve => {
  75. // el.addEventListener(eventName, (e) => {
  76. // el.disabled = true
  77. // el.removeEventListener('click', () => { })
  78. // return resolve(e)
  79. // })
  80. // })
  81. // }
  82. // domEventPromise(knopka, 'click').then(e => console.log('event click happens', e))
  83. // // PedestrianTrafficLight
  84. // function domEventPromise2(el, eventName,) {
  85. // return new Promise(resolve => {
  86. // el.addEventListener(eventName, (e) => {
  87. // return resolve(e)
  88. // })
  89. // })
  90. // }
  91. // async function trafficLight3(delayG, delayR,) {
  92. // while (true) {
  93. // red3.classList.remove('active')
  94. // green3.classList.add('active')
  95. // await delay(delayG)
  96. // green3.classList.remove('active')
  97. // red3.classList.add('active')
  98. // await delay(delayR * .25)
  99. // await Promise.race([domEventPromise2(btn, 'click',).then(() => delay(0)), delay(delayR * .75)])
  100. // }
  101. // }
  102. // trafficLight3(3000, 5000,)
  103. // //speedTest
  104. // async function speedtest(getPromise, count = 1, parallel = 1) {
  105. // let startTime = performance.now(); // duration
  106. // let timeQueries = []
  107. // await (async () => {
  108. // for (let i = 0; i < count; i++) {
  109. // let arrGetPomises = []
  110. // for (let j = 0; j < parallel; j++) {
  111. // arrGetPomises = [...arrGetPomises, getPromise]
  112. // }
  113. // let timeQuery = performance.now();
  114. // await Promise.all([...arrGetPomises.map(item => item())]);
  115. // timeQueries = [...timeQueries, (performance.now() - timeQuery)]
  116. // }
  117. // })()
  118. // let duration = Math.round(performance.now() - startTime)
  119. // let querySpeed = (count * parallel) / 100000
  120. // let queryDuration = timeQueries.reduce((a, b) => (a + b)) / timeQueries.length
  121. // let parallelSpeed = duration / (count * parallel) / 10000
  122. // let parallelDuration = duration / (count * parallel)
  123. // return {
  124. // duration, //общая длительность работы цикла
  125. // querySpeed, //реальная средняя скорость запроса
  126. // queryDuration, //реальное среднее время запроса
  127. // parallelSpeed, //скорость в запросах в миллисекунду
  128. // parallelDuration //среднее время обработки запроса параллельно
  129. // }
  130. // }
  131. // speedtest(() => delay(1000), 5, 5).then(result => console.log(result))