main.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. const getGQL = url =>
  2. (query, variables) => fetch(url, {
  3. //метод
  4. method: 'POST',
  5. headers: {
  6. //заголовок content-type
  7. "Content-Type": "application/json"
  8. },
  9. body: JSON.stringify({ query, variables })
  10. //body с ключами query и variables
  11. }).then(res => res.json()).then(data => {
  12. //расковырять data, если все ок - отдать data.login или data.CategoryFindOne, или шо там еще
  13. //если есть errors, то выбросить исключение и тем самым зареджектить промис
  14. return data
  15. })
  16. const gql = getGQL('http://shop-roles.asmer.fs.a-level.com.ua/graphql');
  17. (async () => {
  18. try {
  19. console.log((await gql(`
  20. query NameForMe1($login:String, $password:String){
  21. login(login:$login, password:$password)
  22. }
  23. `, { login: 'tst', password: '123' })).data.login)
  24. } catch (error) {
  25. console.log(error);
  26. }
  27. })()
  28. //Светофор
  29. const delay = ms => new Promise(ok => setTimeout(() => ok(ms), ms))
  30. async function trafficLight(delayG, delayY, delayR) {
  31. while (true) {
  32. red.classList.remove('active')
  33. green.classList.add('active')
  34. await delay(delayG)
  35. green.classList.remove('active')
  36. yellow.classList.add('active')
  37. await delay(delayY)
  38. yellow.classList.remove('active')
  39. red.classList.add('active')
  40. await delay(delayR)
  41. }
  42. }
  43. trafficLight(3000, 200, 3000,)
  44. // Светофор Stage 2
  45. function delay2(ms, el) {
  46. return new Promise(ok => {
  47. let count = ms / 1000;
  48. (counter = (c) => {
  49. el.classList.add('active')
  50. el.innerText = count
  51. if (count > 0) setTimeout(() => counter(count--), 1000);
  52. else {
  53. el.innerText = ''
  54. el.classList.remove('active')
  55. return ok()
  56. }
  57. })()
  58. })
  59. }
  60. async function trafficLight2(delayG, delayY, delayR) {
  61. while (true) {
  62. await delay2(delayG, green2)
  63. await delay2(delayY, yellow2)
  64. await delay2(delayR, red2)
  65. }
  66. }
  67. trafficLight2(5000, 2000, 5000)
  68. //domEventPromise
  69. function domEventPromise(el, eventName) {
  70. return new Promise(resolve => {
  71. el.addEventListener(eventName, (e) => {
  72. el.disabled = true
  73. el.removeEventListener('click', () => { })
  74. return resolve(e)
  75. })
  76. })
  77. }
  78. domEventPromise(knopka, 'click').then(e => console.log('event click happens', e))
  79. // PedestrianTrafficLight
  80. function delay3(ms, el) {
  81. return new Promise(ok => {
  82. let count = ms / 1000;
  83. (counter3 = (c) => {
  84. el.classList.add('active')
  85. el.innerText = count
  86. if (count > 0) setTimeout(() => counter3(count--), 1000);
  87. else {
  88. el.innerText = ''
  89. el.classList.remove('active')
  90. return ok()
  91. }
  92. })()
  93. })
  94. }
  95. async function trafficLight3(delayG, delayY, delayR, ) {
  96. while (true) {
  97. await delay3(delayG, green3)
  98. await delay3(delayY, yellow3)
  99. await delay3(delayR, red3)
  100. }
  101. }
  102. trafficLight3(5000, 2000, 5000)