serg155alternate 2 年之前
父节点
当前提交
e312042a7e
共有 2 个文件被更改,包括 59 次插入8 次删除
  1. 49 1
      HW10 Closures and scopes/form OOP/script.js
  2. 10 7
      HW15 generator/script.js

+ 49 - 1
HW10 Closures and scopes/form OOP/script.js

@@ -174,4 +174,52 @@ form.validators.surname = (value, key, data, input) => value.length > 2 &&
     !value.includes(' ') ? true : 'Wrong name'
 
 
-console.log(form);
+console.log(form);
+
+
+
+/* Starwars localStorage
+По в ok сохранять поредактированный объект localStorage. При дальнейшей работе выводить не объект с бэка, а объект из localStorage. В качестве ключей используйте ссылки из swapi.
+ localStorage - это глобальный объект в браузере, значения которого переживают перезагрузку вкладки/браузера/компьютера
+localStorage.userName ? alert(`Your name is ${localStorage.userName}`) : localStorage.userName = prompt('What is your name?') 
+попробуйте это и нажмите f5 */
+
+localStorage.userName ? alert(`Your name is ${localStorage.userName}`) : localStorage.userName = prompt('What is your name?') 
+console.log(localStorage);
+//localStorage.clear();
+//console.log(localStorage);
+
+
+
+/* Cached Promise
+Оберните fetch или myfetch в функцию, которая:
+Если данные найдены в localStorage - резолвится сразу, результатом промиса будет объект из localStorage (гляньте на Promise.resolve)
+Если данные не найдены в localStorage - ведет себя как обычный fetch/myfetch */
+
+
+function localStorageFetch(url) {
+        return new Promise(function (resolve, reject) {
+            if(localStorage.length){
+                resolve(localStorage)
+            } else {
+                const request = new XMLHttpRequest()
+                    request.open('GET', url, true)
+                    request.send();
+                    request.onreadystatechange = function () {
+                        if (request.readyState != 4) {
+                            return;
+                        }
+                        if (request.status == 200) {
+                            resolve(JSON.parse(request.responseText))
+                        } else {
+                            reject = () => console.log('Error: ' + request.status + ', ' + request.statusText);
+                        }
+                    }
+                
+                }
+        })    
+};
+
+
+localStorageFetch('https://jsonplaceholder.typicode.com/users')
+    .then(luke => console.log(luke))

+ 10 - 7
HW15 generator/script.js

@@ -1,6 +1,6 @@
 //Closures and scopes
 
-/* async function jsonPost(url, data) {
+async function jsonPost(url, data) {
     let response = await fetch(url, {
         method: "POST",
         headers: {
@@ -8,17 +8,18 @@
         },
         body: JSON.stringify(data)
       });
-      console.log(response);
     if (response.ok) {
         console.log('work')
         let json = await response.json();
+        console.log(json)
         return json;
     } else {
          new Error('jsonPost failed'+ response.status);
-    }   
-} */
+    }  
+}
 
-function jsonPost(url, data) {
+
+/* function jsonPost(url, data) {
     return new Promise((resolve, reject) => {
         var x = new XMLHttpRequest();
         x.onerror = () => reject(new Error('jsonPost failed'))
@@ -34,6 +35,8 @@ function jsonPost(url, data) {
             }
         }
     })
-}
-jsonPost("http://students.a-level.com.ua:10012", {func: 'addMessage', nick: "HellWords", message: 'AHHAAAH'}).then(res => console.log(res)
+} */
+
+
+jsonPost('https://jsonplaceholder.typicode.com/posts', {func: 'addMessage', nick: "HellWords", message: 'AHHAAAH'}).then(res => console.log(res)
 )