Kaynağa Gözat

cw promisify

Olga_Brekhuntsova 2 yıl önce
ebeveyn
işleme
a8557897fd

+ 104 - 0
classwork-promise/.gitignore

@@ -0,0 +1,104 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+lerna-debug.log*
+
+# Diagnostic reports (https://nodejs.org/api/report.html)
+report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
+
+# Runtime data
+pids
+*.pid
+*.seed
+*.pid.lock
+
+# Directory for instrumented libs generated by jscoverage/JSCover
+lib-cov
+
+# Coverage directory used by tools like istanbul
+coverage
+*.lcov
+
+# nyc test coverage
+.nyc_output
+
+# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
+.grunt
+
+# Bower dependency directory (https://bower.io/)
+bower_components
+
+# node-waf configuration
+.lock-wscript
+
+# Compiled binary addons (https://nodejs.org/api/addons.html)
+build/Release
+
+# Dependency directories
+node_modules/
+jspm_packages/
+
+# TypeScript v1 declaration files
+typings/
+
+# TypeScript cache
+*.tsbuildinfo
+
+# Optional npm cache directory
+.npm
+
+# Optional eslint cache
+.eslintcache
+
+# Microbundle cache
+.rpt2_cache/
+.rts2_cache_cjs/
+.rts2_cache_es/
+.rts2_cache_umd/
+
+# Optional REPL history
+.node_repl_history
+
+# Output of 'npm pack'
+*.tgz
+
+# Yarn Integrity file
+.yarn-integrity
+
+# dotenv environment variables file
+.env
+.env.test
+
+# parcel-bundler cache (https://parceljs.org/)
+.cache
+
+# Next.js build output
+.next
+
+# Nuxt.js build / generate output
+.nuxt
+dist
+
+# Gatsby files
+.cache/
+# Comment in the public line in if your project uses Gatsby and *not* Next.js
+# https://nextjs.org/blog/next-9-1#public-directory-support
+# public
+
+# vuepress build output
+.vuepress/dist
+
+# Serverless directories
+.serverless/
+
+# FuseBox cache
+.fusebox/
+
+# DynamoDB Local files
+.dynamodb/
+
+# TernJS port file
+.tern-port

+ 12 - 0
classwork-promise/.prettierrc.json

@@ -0,0 +1,12 @@
+{
+    "printWidth": 80,
+    "tabWidth": 2,
+    "useTabs": false,
+    "semi": true,
+    "singleQuote": true,
+    "trailingComma": "all",
+    "bracketSpacing": true,
+    "jsxBracketSameLine": false,
+    "arrowParens": "avoid",
+    "proseWrap": "always"
+  }

+ 3 - 0
classwork-promise/.vscode/settings.json

@@ -0,0 +1,3 @@
+{
+  "liveServer.settings.port": 5502
+}

+ 2 - 0
classwork-promise/README.md

@@ -0,0 +1,2 @@
+# JS-1
+Hometask-1

+ 13 - 0
classwork-promise/index.html

@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html lang="ru">
+<head>
+<meta charset="UTF-8" />
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>JS-classwork-promisify-16_12</title>
+</head>
+<body>
+  <div id="loginForm"></div>
+  <script src="/js/promisify.js" type="module"></script>
+</body>
+</html>
+

+ 69 - 0
classwork-promise/js/promisify.js

@@ -0,0 +1,69 @@
+
+// Промисификация:
+// каркас
+// function confirmPromise(text){
+//     return new Promise((fulfill, reject) => {
+//         //fulfill()
+//         //reject()
+//     })
+// }
+
+// confirm
+// Написать функцию промисифицирующую confirm.Функция должна принимать текст для confirm,
+// и создавать(а также возвращать) промис, который резолвится по нажатию ok, и реджектится по нажатию cancel в окне confirm.
+
+// prompt
+// Написать функцию промисифицирующую prompt.Функция должна принимать текст для prompt,
+// и создавать(а также возвращать) промис, который резолвится по нажатию ok с результатом, введенным пользователем,
+// и реджектится по нажатию cancel в окне prompt.
+
+// LoginForm
+// Промисифицировать LoginForm, сделать функцию, которая возвращает промис, и принимает настройки для LoginForm. 
+// Промис должен резолвится с объектом вида { login, password }, reject - при нажатии отмен.
+
+//РЕШЕНИЕ
+
+function confirmPromise(text){
+    return new Promise((fulfill, reject) => {
+        confirm(text)?fulfill():reject()
+    })
+}
+
+confirmPromise("ку-ку").then(result => console.log('Нажали ок')).catch(result => console.log('Нажали отмена'))
+
+    function promptPromise(text){
+    return new Promise((fulfill, reject) => {
+        let x = prompt(text);
+            x? fulfill(x) : reject()
+    })
+}
+
+promptPromise("Сколько тебе лет?").then(result => console.log(result)).catch(result => console.log('Нажали отмена'))
+
+   
+    function formPromise(parent){
+        return new Promise((fulfill, reject) => {
+            const loginInput = document.createElement('input');
+            const passInput = document.createElement('input');
+            const signInBtn = document.createElement("button");
+            const cancelBtn = document.createElement("button");
+            loginInput.placeholder = 'login';
+            passInput.placeholder = 'password';
+            signInBtn.textContent = 'Sign in';
+            cancelBtn.textContent = 'Cancel';
+            parent.append(loginInput);
+            parent.append(passInput);
+            parent.append(signInBtn);
+            parent.append(cancelBtn);
+            signInBtn.onclick = () => {
+                const user = { login: loginInput.value, password: passInput.value };
+                fulfill(user)
+                loginInput.value = '';
+                passInput.value = '';
+            }
+            cancelBtn.onclick = () => {reject() }               
+    })
+}
+
+formPromise(loginForm).then(result => console.log(result)).catch(result => console.log('Нажали отмена'))
+