|
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
|
|||||||||||
Асинхронность - раздельный запуск функций13.07.2025, 12:38. Показов 4861. Ответов 130
Метки нет (Все метки)
Пришел к тому, что давно пора было заняться вопросами, связанными с асинхронностью (как не раз советовали более опытные товарищи). И вот появился вопрос, если кого не затруднит с ответом:
f0 () и f0_1 () запускаются независимо. Причем f0 () сразу же и только один раз. f0_1 () может запускаться неоднократно. Но вот при первом запуске f0_1 () переменная p0 может не успеть сформировать. И не знаю, какой механизм оптимальнее использовать для ожидания загрузки.
0
|
|||||||||||
| 13.07.2025, 12:38 | |
|
Ответы с готовыми решениями:
130
Как сделать раздельный скроллинг вертикальных блоков, как на news.mail.ru? Асинхронность javascript NodeJS асинхронность |
|
3857 / 1740 / 432
Регистрация: 14.03.2022
Сообщений: 4,434
|
|
| 16.07.2025, 14:33 | |
|
1
|
|
|
1296 / 1282 / 190
Регистрация: 21.01.2024
Сообщений: 5,931
|
||
| 16.07.2025, 14:43 | ||
|
Я бы мог вам показать на вашем примере как это делается, но ваши примеры понять невозможно. Вы пишете какие то неполные обрывки. Вот сами посмотрите на него? И не глядя в другие места (которых у нас нет) скажите, что такое st_g откуда оно берется, где, когда и какое значение ей присваивается?
0
|
||
|
Заблокирован
|
||
| 16.07.2025, 14:46 | ||
0
|
||
|
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
|
||
| 16.07.2025, 15:07 [ТС] | ||
|
- st_g это просто переменная для отладки, удалял лишние операторы, чтобы не отвлекали, и видимо пропустил. Хотя и проверяю публикуемое и не один раз проверяю Спасибо за предложение, попробую пока сам на основе новых советов доделать, а потом уже неспеша без ошибок подготовлю если что пример
0
|
||
|
1296 / 1282 / 190
Регистрация: 21.01.2024
Сообщений: 5,931
|
|
| 16.07.2025, 15:17 | |
|
0
|
|
|
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
|
||||||
| 16.07.2025, 21:00 [ТС] | ||||||
|
Добрый вечер, voraa!
Склоняюсь к мнению, что не ошибался в плане использования рекурсии и ее применения, если переменные или код на пред. этапе не успеют загрузиться. Хотя и безусловно буду помнить о Вашем мнении при дальнейшей проверки кода на вопрос зацикливания. Почему опять к этому вернулся: формировал последовательный запуск 3-х функций по мере готовности данных из предыдущей. С 2-й функцией frm_mIsk () все хорошо, а вот в 3-й q_zagF2 () уже действительно произошло зацикливание (пришлось поставить счетчик для прерывания) - к тому, что если зацикливание происходит, его действительно легко увидеть. Вот что получилось на текущий момент (пример рабочий), у меня только БД содержит данные, которые действительно формируются в массив m_isk []:
0
|
||||||
|
1296 / 1282 / 190
Регистрация: 21.01.2024
Сообщений: 5,931
|
|
| 16.07.2025, 22:47 | |
|
Вы не пробиваемы, не обучаемы.
Делайте как хотите.
1
|
|
|
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
|
||
| 17.07.2025, 08:16 [ТС] | ||
|
0
|
||
|
Заблокирован
|
|
| 17.07.2025, 08:32 | |
|
755, послушай меня еще раз. У тебя главная проблема это не код, а твоя логика. Код написать это ерунда. Важно понимать, как это работает и для чего это надо. Не с бухты-барахты делать асинхронные операции, а по мере необходимости. Разобраться как клиент общается с сервером и как сервер возвращает данные. Ну, и так далее.
2
|
|
|
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
|
|||
| 17.07.2025, 21:52 [ТС] | |||
|
За совет отдельное спасибо. Извините, что в целом с советом не согласен: По-моему неразумно судить о чужой логике, о которой практически ничего не знаешь. Хотя согласен с тем, что логика важнее кода. Но и логика не спасет, если не понимаешь каких-то важных механизмов программирования (с этим как раз столкнулся сейчас и сам) Позвольте остаться при своем мнении - с логикой у меня в основном все в порядке (и для такой самоуверенности у меня есть основания). Ну и давайте потерпим (боюсь зарекаться на счет сроков), а когда размещу продукт - вот тогда станет ясно, прав ли был я или большинство из данной темы. А потом вспомнил, что не все так просто - с чего началось изучение асинхронных операций: в одной из предыдущих тем krvsa, помог решить проблему сохранения данных indexedDB, реализовав через промисы. (Это у меня вторая функция). А в ней данный формируются через обработчик событий .onsuccess и, если правильно понял, к сожалению, а м.б. и нет без асинхронных операций не обойтись. Хотя и повторюсь к данному совету: выбору асинхронности пришел сегодня утром и сам, решив асинхронность (как серьезную тему) изучать параллельно с дальнейшим программированием других элементов. Самое главное, мне сейчас надо в первую очередь самому подумать и действительно определиться с алгоритмом
0
|
|||
|
2604 / 1508 / 689
Регистрация: 23.08.2015
Сообщений: 3,841
|
|||||||
| 18.07.2025, 02:16 | |||||||
|
Получается смысл ваших рекурсий - дождаться результата выполнения других функций, хотя промисы сами сигнализируют о своей готовности. Т.е. уже тут вместо переменной idb_db, где вы храните подключение можно везде использовать сам промис К примеру
1
|
|||||||
|
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
|
||||||||||||
| 18.07.2025, 10:00 [ТС] | ||||||||||||
|
Доброе утро, sad67man!
Нравится Ваш вариант - естественный, наглядный. Если правильно понял (в моей терминологии):
Да, Вы правильно поняли смысл рекурсии во 2-й функции (почему и считаю, что не происходит зацикливания) - если данные не успели сформироваться, она ждет результата промиса. promise.then (st => { frm_mIsk() ; }) - метод then ставится в очередь и рекурсия срабатывает только при наступлении результата. А для 3-й функции как раз этого и не происходило (причина зацикливания) - не формировался положительный результат промиса f2, поэтому и нашел иное решение (уже без рекурсии):
Но Ваш вариант намного нагляднее и, соответственно, предпочтительнее Ps. Подумал, надо уточнить свою позицию - не хочу, чтобы подумали, что утверждаю что-либо - только вижу такое объяснение (вполне возможно, какие-то рассуждения и ошибочны)
0
|
||||||||||||
|
2604 / 1508 / 689
Регистрация: 23.08.2015
Сообщений: 3,841
|
||||||||||||||||||
| 18.07.2025, 12:24 | ||||||||||||||||||
1
|
||||||||||||||||||
|
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
|
||
| 18.07.2025, 12:39 [ТС] | ||
|
Пока только благодарю за советы, нужно время, чтобы с ними ознакомиться и понять, как их внедрить в код - дело в том, что алгоритм у меня сложнее, например, данные для 3-й функции у меня могут формироваться только один раз для ряда запросов, поэтому уже появляется анализ и возможный пропуск функции 2. Прощаюсь на форуме быстрей всего до завтра.
0
|
||
|
2604 / 1508 / 689
Регистрация: 23.08.2015
Сообщений: 3,841
|
|||||||
| 18.07.2025, 13:03 | |||||||
|
В реальном проекте мне трудно представить такую ситуацию.. и это больше похоже на какой-то дикий костыль.. Но даже эту штуку можно обернуть в промис.. Тогда все остальные функции, использующие эти данные хотябы не пострадают) Т.е. можно попытаться этот костыль локализовать
В любом случае такого лучше избегать.. Лучше использовать прямые цепочки.. Если функция f2 не вызывалась, то тогда и не стоит вызывать f3().. Иначе такое будет очень сложно поддерживать, вас потом другие программисты, будут долго вспоминать)
1
|
|||||||
|
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
|
||
| 18.07.2025, 19:57 [ТС] | ||
|
Алгоритм работы (примерный) и не единственный: • открытие БД - при запуске режима - асинхронно / f1()/ • анализ - есть ли сформированный массив id или нет + подходит ли он или нет для данного режима - если нет - формирование из хранилища массива id /в нашей терминологии f2() - получается асинхронно из-за особенностей indexedDB, хотя т.к. работа на клиенте - это и не так важно/ • Режим Избранное - работа с данным массивом, в т.ч. и на сервере - / f3()/ Первые два пункта запускаются автоматически при определенных условиях, 3-й же обычный интерактивный режим
0
|
||
|
Заблокирован
|
|||
| 18.07.2025, 20:13 | |||
![]() Хочу задать еще один вопрос. Как думаешь, для чего придумали в программировании функции?
0
|
|||
|
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
|
|
| 18.07.2025, 20:24 [ТС] | |
|
0
|
|
|
Заблокирован
|
||
| 18.07.2025, 20:44 | ||
|
0
|
||
|
1296 / 1282 / 190
Регистрация: 21.01.2024
Сообщений: 5,931
|
|
| 18.07.2025, 20:49 | |
|
Я вообще. С большим трудом понимаю назначение IndexedDB.
Делать какое то приложение чисто для себя, для работы на одном устройстве?
0
|
|
| 18.07.2025, 20:49 | |
|
Асинхронность в nodejs
Асинхронность, многопоточность и тд SetTimeout, clearTimeout - асинхронность, однопоточность Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Клиент
Uhbif79 18.06.2026
Здесь простой клиент для работы с сервером.
|
Сервер
Uhbif79 18.06.2026
Выкладываю простейший сервер.
|
Дефенестрация
kumehtar 18.06.2026
Узнал интересное слово. Дефенестрация. Это когда ты выбрасываешь кого-либо или что-либо из окна. Возьму на вооружение)))
|
Дихотомия добра и зла
kumehtar 18.06.2026
Как Дзен-буддисты говорят о добре и зле: не нужно воевать против зла, нужно воевать против невежества. Тогда добро станет ествественным, и поэтому вечным. Но дело в том, что невежество всё время. . .
|
|
Своя Интернет-Компания
iceja 18.06.2026
Я программист с экономическим образованием, пишу свой проект, это SaaS для бизнесов. Мне нужен co-founder с высшим экономическим образованием, и/ или инвестор. Сейчас проект в интенсивной разработке,. . .
|
24 Мат модель здравосохранения: функциональные требования к строительству пищеблока
anaschu 18.06.2026
СРесурсами1: финансовый SD-контур, калькулятор функциональных требований пищеблока
Сегодня разделили затраты в агенте Экономика по образцу модели НАСОСЫ, добавили расчёт ROI и построили первый. . .
|
23. что сделано за последнее время.
anaschu 17.06.2026
• Эталон: Клиника НИИ питания РАМН, Москва — централизованный пищеблок, 225 коек, 180 пациентов
• Git: репозиторий med2, ветка абсентеизм. Рабочий файл: СРесурсами1_v4. alp
• Смежный проект:. . .
|
22. Подключение слоя системной динамики (потоковые диффуры): экономические метрики модели
anaschu 17.06.2026
Апдейт модели: финансовый контур, разделение затрат
Продолжаю развивать модель рабочего коллектива на AnyLogic. В этот раз работа шла над агентом Экономика — финансовым SD-слоем модели. Задача:. . .
|