@undefined_title

Каким образом Генераторы могут позволять контролировать асинхронность?

Каким образом Генераторы могут позволять контролировать асинхронность? и что лучше всего использовать сейчас для асинхронного кода promise, async await, или генераторы?

// example with promise
fetch("https://toster.ru/")
.then(res => {
  res.text()
  .then(text => console.log(text))
})

// example with async await
async function testAsync() {
let response = await fetch("https://toster.ru/");
let text = await response.text();

return text;
}
testAsync().then(text => console.log(text)) // опять же приходится использовать промис

// как будет выглядеть пример с генератором???
function* testGenerator() {
let response = yield  fetch("https://toster.ru/");
// валится ошибка can not read property text of undefined
let text = yield response.text();

return text;
}
a = testGenerator()
a.next()
a.next() // валится ошибка can not read property text of undefined


p-aUuLvmDq0.jpg
  • Вопрос задан
  • 470 просмотров
Решения вопроса 1
mannaro
@mannaro Куратор тега JavaScript
Умею профессионально гуглить
У тебя небольшая каша в голове. Изначально был callback, затем ему на смену пришел promise. Потом придумали генераторы, которые научились останавливать функцию до достижения какого-то события. Использовать их оказалось очень удобно для ожидания разрешения промиса.
А потом ввели сахар - async/await. Тот же генертор, но немного в профиль. Где await вместо yield, а async вместо *.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы