promisify.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. // Промисификация:
  2. // каркас
  3. // function confirmPromise(text){
  4. // return new Promise((fulfill, reject) => {
  5. // //fulfill()
  6. // //reject()
  7. // })
  8. // }
  9. // confirm
  10. // Написать функцию промисифицирующую confirm.Функция должна принимать текст для confirm,
  11. // и создавать(а также возвращать) промис, который резолвится по нажатию ok, и реджектится по нажатию cancel в окне confirm.
  12. // prompt
  13. // Написать функцию промисифицирующую prompt.Функция должна принимать текст для prompt,
  14. // и создавать(а также возвращать) промис, который резолвится по нажатию ok с результатом, введенным пользователем,
  15. // и реджектится по нажатию cancel в окне prompt.
  16. // LoginForm
  17. // Промисифицировать LoginForm, сделать функцию, которая возвращает промис, и принимает настройки для LoginForm.
  18. // Промис должен резолвится с объектом вида { login, password }, reject - при нажатии отмен.
  19. //РЕШЕНИЕ
  20. function confirmPromise(text){
  21. return new Promise((fulfill, reject) => {
  22. confirm(text)?fulfill():reject()
  23. })
  24. }
  25. confirmPromise("ку-ку").then(result => console.log('Нажали ок')).catch(result => console.log('Нажали отмена'))
  26. function promptPromise(text){
  27. return new Promise((fulfill, reject) => {
  28. let x = prompt(text);
  29. x? fulfill(x) : reject()
  30. })
  31. }
  32. promptPromise("Сколько тебе лет?").then(result => console.log(result)).catch(result => console.log('Нажали отмена'))
  33. function formPromise(parent){
  34. return new Promise((fulfill, reject) => {
  35. const loginInput = document.createElement('input');
  36. const passInput = document.createElement('input');
  37. const signInBtn = document.createElement("button");
  38. const cancelBtn = document.createElement("button");
  39. loginInput.placeholder = 'login';
  40. passInput.placeholder = 'password';
  41. signInBtn.textContent = 'Sign in';
  42. cancelBtn.textContent = 'Cancel';
  43. parent.append(loginInput);
  44. parent.append(passInput);
  45. parent.append(signInBtn);
  46. parent.append(cancelBtn);
  47. signInBtn.onclick = () => {
  48. const user = { login: loginInput.value, password: passInput.value };
  49. fulfill(user)
  50. loginInput.value = '';
  51. passInput.value = '';
  52. }
  53. cancelBtn.onclick = () => {reject() }
  54. })
  55. }
  56. formPromise(loginForm).then(result => console.log(result)).catch(result => console.log('Нажали отмена'))