powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / JavaScript генераторы. Вопрос.
20 сообщений из 20, страница 1 из 1
JavaScript генераторы. Вопрос.
    #39771026
sergnn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите где ошибаюсь
пишу (использую библиотеку co())

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
var f1 = function () {}	
var f2 = function () {}	
var f3 = function () {}	

function* generator () {
   yield f1();
   yield f2();
   yield f3();
};

co(generator);



исполняется только f1()

OK? тогда так, без co()

Код: javascript
1.
2.
3.
4.
	let generator = generateSequence();
	generator.next();
	generator.next();
	generator.next();



эффект тот же.
Я понимаю, что я что-то не понимаю. Но не понимаю что именно.
...
Рейтинг: 0 / 0
JavaScript генераторы. Вопрос.
    #39771258
Лысый дядька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
JavaScript генераторы. Вопрос.
    #39771404
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лысый дядька,

кто-то ещё на саблимке сидит )
...
Рейтинг: 0 / 0
JavaScript генераторы. Вопрос.
    #39771410
Лысый дядька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЛысый дядька,

кто-то ещё на саблимке сидит )
Неа, не сижу. :) Просто дома не работаю принципиально и поэтому установленных IDE под рукой нет, а сижу (и плотно) на линейке продуктов от JetBrains, куплен весь пакет тащемта.
...
Рейтинг: 0 / 0
JavaScript генераторы. Вопрос.
    #39771433
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лысый дядькаа сижу (и плотно) на линейке продуктов от JetBrains, куплен весь пакет тащемта

лойс :)
аналогично
...
Рейтинг: 0 / 0
JavaScript генераторы. Вопрос.
    #39772023
sergnn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Лысый дядька,
Спасибо, нашёл ошибку.
Но библиотека co() всё равно почему то неправильно работает. Может не там взял?
Вызывает только первую функцию. А при вызове последовательно методами next() всё нормально.
...
Рейтинг: 0 / 0
JavaScript генераторы. Вопрос.
    #39772045
Лысый дядька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergnnНо библиотека co() всё равно почему то неправильно работает.
А что вообще вы хотите добиться? Я не увидет какого-то профита от использования этой тулзы, наоборот, она только запутывает и усложняет.
...
Рейтинг: 0 / 0
JavaScript генераторы. Вопрос.
    #39772097
sergnn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Лысый дядька,

Есть блок в программе, где несколько действий должны выполняться последовательно (синхронно).
Но количество действий должно в последствии увеличиваться.
co() вроде как сама должна высчитать число вызовов метода next()
А так надо не забыть в случае дополнения добавить ещё вызов next().
Если забыть, то потом ошибку искать утомительно будет.
Тем более, что блок дописывать буду не только я.
...
Рейтинг: 0 / 0
JavaScript генераторы. Вопрос.
    #39772105
Лысый дядька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergnnЛысый дядька,

Есть блок в программе, где несколько действий должны выполняться последовательно (синхронно).
Но количество действий должно в последствии увеличиваться.
co() вроде как сама должна высчитать число вызовов метода next()
А так надо не забыть в случае дополнения добавить ещё вызов next().
Если забыть, то потом ошибку искать утомительно будет.
Тем более, что блок дописывать буду не только я.

Честно говоря, не понял ничего. Каким образом co может вычислить количество вызовов метода next? Это в неё надо как-то передать? И чем это отличается от простого цикла со счетчиком?
...
Рейтинг: 0 / 0
JavaScript генераторы. Вопрос.
    #39772178
sergnn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Лысый дядька,

описание работы с co() взято отсюда:
https://habr.com/ru/company/piter/blog/434360/

Может я что-то неправильно понял.
Не могу себя назвать крутым знатоком скрипта.
Основная моя стезя Java + SQL
...
Рейтинг: 0 / 0
JavaScript генераторы. Вопрос.
    #39772198
Лысый дядька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergnnЛысый дядька,

описание работы с co() взято отсюда:
https://habr.com/ru/company/piter/blog/434360/

Может я что-то неправильно понял.
Не могу себя назвать крутым знатоком скрипта.
Основная моя стезя Java + SQL

Вы как-нибудь иначе сформируйте свою задачу. Она наверняка решается элементарно.
...
Рейтинг: 0 / 0
JavaScript генераторы. Вопрос.
    #39772250
sergnn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Лысый дядька,

Ок.
Есть несколько функций, которые должны выполнятся последовательно.
Ибо выполнять или не выполнять следующую зависит от результата исполнения предыдущей.
А в функциях есть длительные операции вроде запроса данных с сервера или получения электронной подписи на клиенте.
Понятно, что это решается с помощью обратных вызовов, но если этих функций более нескольких штук,
то код становится просто жутко не читаемым. Тем более если нужно добавить ещё одно действие,
то вставлять дополнительный уровень обратных вызовов получается слишком уж коряво.
Вот с помощью генераторов это в принципе решается, но есть маленькая проблем описанная выше.
то есть при добавлении новой функции нужно не забыть добавить вызов метода генератора next().
Собственно не проблема, но хочется поэлегантнее.
...
Рейтинг: 0 / 0
JavaScript генераторы. Вопрос.
    #39772275
Лысый дядька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergnnОк.
Есть несколько функций, которые должны выполнятся последовательно.
Ибо выполнять или не выполнять следующую зависит от результата исполнения предыдущей.
А в функциях есть длительные операции вроде запроса данных с сервера или получения электронной подписи на клиенте.
Понятно, что это решается с помощью обратных вызовов, но если этих функций более нескольких штук,
то код становится просто жутко не читаемым. Тем более если нужно добавить ещё одно действие,
то вставлять дополнительный уровень обратных вызовов получается слишком уж коряво.
Вот с помощью генераторов это в принципе решается, но есть маленькая проблем описанная выше.
то есть при добавлении новой функции нужно не забыть добавить вызов метода генератора next().
Собственно не проблема, но хочется поэлегантнее.

Ух!!!! Дык промисы же для этого самого и придуманы! Вы про генераторы знаете, а про промисы нет? Гуглите "ES6 Promise"
...
Рейтинг: 0 / 0
JavaScript генераторы. Вопрос.
    #39772346
sergnn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Лысый дядька,
Дык ведь генераторы по сути промисы и возвращают.
По идее это развитие промисов.
...
Рейтинг: 0 / 0
JavaScript генераторы. Вопрос.
    #39772367
Лысый дядька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergnnЛысый дядька,
Дык ведь генераторы по сути промисы и возвращают.
По идее это развитие промисов.
В вашей задаче вы боитесь (и справедливо) ада коллбэков. Промисы решают этот вопрос цепочкой then-вызовов, при чем тут генераторы? Вы хотите последовательно вызвать несколько асинхронных функций, одна после завершения другой, это делается вот так
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
firstThingAsync()  
  .then(function(result1) {
      return new Promise((resolve, reject) => {
          $.getJSON(url)
         .done((json) => resolve(json))
         .fail((xhr, status, err) => reject(status + err.message));
  });
  })
  .then(function(results) {
      return new Promise((resolve, reject) => {
          $.getJSON(url2)
          .done((json) => resolve(json))
         .fail((xhr, status, err) => reject(status + err.message));
  });
  })
    return new Promise((resolve, reject) => {
    $.getJSON(url3)
      .done((json) => resolve(json))
      .fail((xhr, status, err) => reject(status + err.message));
  });
  .catch(function(err){ /* ... */ });
...
Рейтинг: 0 / 0
JavaScript генераторы. Вопрос.
    #39772420
sergnn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Лысый дядька,

Спасибо, посмотрю.
...
Рейтинг: 0 / 0
JavaScript генераторы. Вопрос.
    #39773180
sergnn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Лысый дядька,

И всё таки с генераторами код мне кажется более читаемым.
Хотя конечно дело вкуса и привычки.
...
Рейтинг: 0 / 0
JavaScript генераторы. Вопрос.
    #39773257
Лысый дядька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergnnИ всё таки с генераторами код мне кажется более читаемым.
Хотя конечно дело вкуса и привычки.
Читаемый код получается с async/await
...
Рейтинг: 0 / 0
JavaScript генераторы. Вопрос.
    #39774365
sergnn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Лысый дядька,
использование библиотеки со()
приводит вариант с генераторами почти к виду async/await
только вот почему то не работает зараза.

Кстати для использования async/await нужно тоже доп. библиотеку грузить?
...
Рейтинг: 0 / 0
JavaScript генераторы. Вопрос.
    #39774740
Vladimir A
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergnn,
have a look saga
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / JavaScript генераторы. Вопрос.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]