Last active
March 26, 2019 12:31
-
-
Save DevCodo/5c2ccb000a83fda343b4177ff24ee717 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| function applyForVisa(document) { | |
| console.log("Обработка заявления..."); | |
| return new Promise( (resolve, reject) => { | |
| setTimeout(() => { | |
| Math.random() > 0.5? resolve({value: "visa"}) : reject("В визу отказано"); | |
| }, 1000); | |
| } ) | |
| } | |
| function getVisa(visa) { | |
| console.info("Виза получена"); | |
| return visa; // 1 варианрт Promise генерируется автоматически | |
| return new Promise( (resolve, reject) => { // 2 варианрт | |
| resolve(visa); | |
| reject("Виза не получена") | |
| }); | |
| return Promise.resolve(visa); // 3 варианрт | |
| return Promise.reject("Виза не получена"); // 4 варианрт | |
| } | |
| function bookHotel(visa) { | |
| console.log(visa) | |
| console.log("Бронируем оель"); | |
| return {value: "Бронь"}; | |
| } | |
| function buyTickets(booking) { | |
| console.log(booking) | |
| console.log("Покупаем билеты"); | |
| } | |
| applyForVisa({}) | |
| .then(getVisa) | |
| .then(bookHotel) | |
| .then(buyTickets) | |
| .catch(error => console.error(error)); | |
| //exampmle 2 | |
| let movieList = document.getElementById("movies"); | |
| function addMovieToList(movie) { | |
| let img = document.createElement("img"); | |
| img.src = movie.Poster; | |
| movieList.appendChild(img); | |
| } | |
| function getData(url) { | |
| return new Promise(function(resolve, reject) { | |
| let xhr = new XMLHttpRequest(); | |
| xhr.open('GET', url); | |
| xhr.onload = function() { | |
| if (xhr.status == 200) { | |
| let json = JSON.parse(xhr.response); | |
| resolve(json.Search); | |
| } else { | |
| reject(xhr.statusText); | |
| } | |
| } | |
| xhr.onerror = function(error) { | |
| reject(error); | |
| } | |
| xhr.send(); | |
| }) | |
| } | |
| // let search = 'spider man';// blade runner | |
| // getData(`http://www.omdbapi.com/?i=tt3896198&apikey=73a9858a&s=$${search}}%EF%BB%BF`) | |
| // .then(movies => movies.forEach(movie => addMovieToList(movie))) | |
| // .catch(error => console.error(error)); | |
| let batman = getData(`http://www.omdbapi.com/?i=tt3896198&apikey=73a9858a&s=$batman}%EF%BB%BF`); | |
| let spiderMan = getData(`http://www.omdbapi.com/?i=tt3896198&apikey=73a9858a&s=$spider man}%EF%BB%BF`); | |
| // batman | |
| // .then(movies => movies.forEach(movie => addMovieToList(movie))) | |
| // .catch(error => console.error(error)); | |
| // spiderMan | |
| // .then(movies => movies.forEach(movie => addMovieToList(movie))) | |
| // .catch(error => console.error(error)); | |
| Promise.race([batman, spiderMan]) | |
| .then(movies => movies.forEach(movie => addMovieToList(movie))) | |
| .catch(error => console.error(error)); | |
| function go(num) { | |
| return new Promise(function(resolve, reject) { | |
| let delay = Math.ceil(Math.random() * 3000); | |
| console.log(num, delay); | |
| setTimeout(() => resolve(num), delay); | |
| }) | |
| } | |
| let p1 = go(1); | |
| let p2 = go(2); | |
| let p3 = go(3); | |
| Promise.all([p1, p2, p3]) | |
| .then( value => console.log(value)); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment