Skip to content

Instantly share code, notes, and snippets.

@DevCodo
Last active March 26, 2019 12:31
Show Gist options
  • Select an option

  • Save DevCodo/5c2ccb000a83fda343b4177ff24ee717 to your computer and use it in GitHub Desktop.

Select an option

Save DevCodo/5c2ccb000a83fda343b4177ff24ee717 to your computer and use it in GitHub Desktop.
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