|
@@ -1,4 +1,7 @@
|
|
|
-// graphql task
|
|
|
+// graphql tasks
|
|
|
+
|
|
|
+// first
|
|
|
+
|
|
|
// async function gql(url, query, variables) {
|
|
|
// let response = await fetch(url, {
|
|
|
// method: "POST",
|
|
@@ -68,6 +71,39 @@
|
|
|
// }
|
|
|
// }
|
|
|
|
|
|
+// second
|
|
|
+
|
|
|
+// const getGQL = (url) => (query, variables) =>
|
|
|
+// fetch(url, {
|
|
|
+// method: "POST",
|
|
|
+// headers: {
|
|
|
+// "Content-Type": "application/json",
|
|
|
+// },
|
|
|
+// body: JSON.stringify({ query, variables }),
|
|
|
+// })
|
|
|
+// .then((res) => res.json())
|
|
|
+// .then((data) => {
|
|
|
+// try {
|
|
|
+// return data.data.login;
|
|
|
+// } catch (e) {
|
|
|
+// throw new Error("Something wrong");
|
|
|
+// }
|
|
|
+// });
|
|
|
+
|
|
|
+// const gql = getGQL("http://shop-roles.asmer.fs.a-level.com.ua/graphql");
|
|
|
+// (async function () {
|
|
|
+// console.log(
|
|
|
+// await gql(
|
|
|
+// `
|
|
|
+// query log($login:String, $password:String){
|
|
|
+// login(login:$login, password:$password)
|
|
|
+// }
|
|
|
+// `,
|
|
|
+// { login: "tst", password: "123" }
|
|
|
+// )
|
|
|
+// );
|
|
|
+// })();
|
|
|
+
|
|
|
// Async/Await Homework 2
|
|
|
|
|
|
// Светофор
|
|
@@ -175,10 +211,15 @@
|
|
|
// console.log(`event ${e.type} happens`, e)
|
|
|
// );
|
|
|
|
|
|
-// PedestrianTrafficLight (unfinished)
|
|
|
+// PedestrianTrafficLight
|
|
|
|
|
|
-// function simpleDelay(ms) {
|
|
|
-// new Promise((ok) => setTimeout(() => ok(ms), ms));
|
|
|
+// function domEventPromisePedestrian(element, eventName) {
|
|
|
+// return new Promise((resolve) => {
|
|
|
+// element.addEventListener(eventName, (event) => {
|
|
|
+// console.log("Resolve");
|
|
|
+// return resolve(event);
|
|
|
+// });
|
|
|
+// });
|
|
|
// }
|
|
|
|
|
|
// function delay(ms, el) {
|
|
@@ -202,14 +243,21 @@
|
|
|
// pedestrianBtn.id = "pedestrianBtn";
|
|
|
// pedestrianBtn.innerText = "Turn on green light";
|
|
|
// el.appendChild(pedestrianBtn);
|
|
|
-// pedestrianBtn.addEventListener("click", (event) => {
|
|
|
-// (async function greenLight() {
|
|
|
-// if (+timer.innerText > 3) {
|
|
|
-// await simpleDelay(2000);
|
|
|
-// console.log("After delay");
|
|
|
+// if (+timer.innerText > 4) {
|
|
|
+// (async function () {
|
|
|
+// async function simpleDelay(ms) {
|
|
|
+// console.log(`Delay: ${ms / 1000} seconds`);
|
|
|
+// return new Promise((ok) => setTimeout(() => ok(ms), ms));
|
|
|
// }
|
|
|
+// await simpleDelay(2000);
|
|
|
+// await Promise.race([
|
|
|
+// domEventPromisePedestrian(pedestrianBtn, "click").then(() =>
|
|
|
+// delay(0)
|
|
|
+// ),
|
|
|
+// simpleDelay(ms),
|
|
|
+// ]);
|
|
|
// })();
|
|
|
-// });
|
|
|
+// }
|
|
|
// }
|
|
|
// if (
|
|
|
// infoBlock.classList.contains("green") &&
|
|
@@ -245,10 +293,51 @@
|
|
|
// container.appendChild(red);
|
|
|
// el.appendChild(container);
|
|
|
// await delay(rms, el);
|
|
|
+
|
|
|
// container.classList.remove("red");
|
|
|
// container.removeChild(container.firstChild);
|
|
|
// }
|
|
|
// }
|
|
|
// trafficLightPedestrian(3000, 10000, pedestrianLights);
|
|
|
|
|
|
-// speedtest (temporarily not done)
|
|
|
+// speedtest
|
|
|
+
|
|
|
+// const delay = (ms) => new Promise((ok) => setTimeout(() => ok(ms), ms));
|
|
|
+
|
|
|
+// async function speedtest(getPromise, count = 1, parallel = 1) {
|
|
|
+// let duration;
|
|
|
+// let querySpeed;
|
|
|
+// let queryDuration;
|
|
|
+// let parallelSpeed;
|
|
|
+// let parallelDuration;
|
|
|
+// let start = performance.now();
|
|
|
+// let queries = [];
|
|
|
+
|
|
|
+// await (async () => {
|
|
|
+// let getPromises = [];
|
|
|
+// for (let i = 0; i < count; i++) {
|
|
|
+// for (let j = 0; j < parallel; j++) {
|
|
|
+// getPromises.push(getPromise);
|
|
|
+// }
|
|
|
+// let query = performance.now();
|
|
|
+// await Promise.all([...getPromises.map((el) => el())]);
|
|
|
+// queries.push(performance.now() - query);
|
|
|
+// }
|
|
|
+// })();
|
|
|
+
|
|
|
+// duration = performance.now() - start;
|
|
|
+// querySpeed = (count * parallel) / 100000;
|
|
|
+// queryDuration = queries.reduce((a, b) => a + b) / queries.length;
|
|
|
+// parallelSpeed = duration / (count * parallel) / 10000;
|
|
|
+// parallelDuration = duration / (count * parallel);
|
|
|
+
|
|
|
+// return {
|
|
|
+// duration, //общая длительность работы цикла
|
|
|
+// querySpeed, //реальная средняя скорость запроса
|
|
|
+// queryDuration, //реальное среднее время запроса
|
|
|
+// parallelSpeed, //скорость в запросах в миллисекунду
|
|
|
+// parallelDuration, //среднее время обработки запроса параллельно
|
|
|
+// };
|
|
|
+// }
|
|
|
+
|
|
|
+// speedtest(() => delay(1000), 5, 5).then((result) => console.log(result));
|