Skip to content

Instantly share code, notes, and snippets.

@Yuriy1988
Created April 9, 2017 19:02
Show Gist options
  • Save Yuriy1988/a114185aabf2dd95d5bc13165a1c98fa to your computer and use it in GitHub Desktop.
Save Yuriy1988/a114185aabf2dd95d5bc13165a1c98fa to your computer and use it in GitHub Desktop.
//promises
var p = new Promise((resolve, reject) => {
resolve(1);
})
p.then(
success => { console.log(success) },
fail => { console.log(fail)
});
// промисы - специальные объекты, которые содержат свое состояние, сначала состояние pending, после выполения асинхронной операции, fulfilled, rejected
// методы then, catch, all
// iterators
/*
генераторы - новый вид функций.
они могут приостанавливать свое выполнение, возвращать промежуточный результат, и возобновлять свое выполенение в нужный момент времени
генераторы удобно использовать с промисами, получается легко читаемый код.
создвем ф-ю, объявляем ее со *
далее сохраняем вызов функции в переменнуюпо этой переменной можно итерироваться с помощью next
в генератор при помощи next можно передать значение
*/
function* generator() {
try {
const post = yield fetch('https://jsonplaceholder.typicode.com/posts/6');
const title = yield post.json().title;
return title;
} catch(e) {
console.log(e);
}
}
function execute(gen, yieldValue) {
let next = gen.next(yieldValue);
if (!next.done) {
next.value.then(
result => execute(gen, result),
err => gen.throw(err)
)
} else {
return next.value;
}
}
/*
async/await;
async - функция, которая возвращает промис
await тоже возвращает промис
*/
async function test() {
const post = await fetch('https://jsonplaceholder.typicode.com/posts/6');
const title = await post.then(res => res.json()).title;
}
async function test2() {
let a = () => {};
return a;
}
var itareble = {
[Symbol.iterator]() {
let val = 1;
return {
next() {
let value = val > 10 ? undefined : val++;
let done = !value;
return { done, value }
}
}
}
}
// итератор - это объект, который позволяет итерироваться по другому объекту
// добавляется с помощью [Symbol.iterator]()
// этот метод должен возвращать объект, у которого есть метод next()
// а метод next должен возвращать объект с ключами done, value;
var a = {
size: {
test: 1,
test2: 2,
}
}
var { size: { test, test2 }} = a;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment