|
-15 / 0 / 0
Регистрация: 12.11.2020
Сообщений: 335
|
|||||||||||
Асинхронность - раздельный запуск функций13.07.2025, 12:38. Показов 4542. Ответов 130
Метки нет (Все метки)
Пришел к тому, что давно пора было заняться вопросами, связанными с асинхронностью (как не раз советовали более опытные товарищи). И вот появился вопрос, если кого не затруднит с ответом:
f0 () и f0_1 () запускаются независимо. Причем f0 () сразу же и только один раз. f0_1 () может запускаться неоднократно. Но вот при первом запуске f0_1 () переменная p0 может не успеть сформировать. И не знаю, какой механизм оптимальнее использовать для ожидания загрузки.
0
|
|||||||||||
| 13.07.2025, 12:38 | |
|
Ответы с готовыми решениями:
130
Как сделать раздельный скроллинг вертикальных блоков, как на news.mail.ru? Асинхронность javascript NodeJS асинхронность |
|
3800 / 1631 / 428
Регистрация: 14.03.2022
Сообщений: 4,069
|
|
| 16.07.2025, 14:33 | |
|
1
|
|
|
1222 / 1114 / 173
Регистрация: 21.01.2024
Сообщений: 5,099
|
||
| 16.07.2025, 14:43 | ||
|
Я бы мог вам показать на вашем примере как это делается, но ваши примеры понять невозможно. Вы пишете какие то неполные обрывки. Вот сами посмотрите на него? И не глядя в другие места (которых у нас нет) скажите, что такое st_g откуда оно берется, где, когда и какое значение ей присваивается?
0
|
||
|
Заблокирован
|
||
| 16.07.2025, 14:46 | ||
0
|
||
|
-15 / 0 / 0
Регистрация: 12.11.2020
Сообщений: 335
|
||
| 16.07.2025, 15:07 [ТС] | ||
|
- st_g это просто переменная для отладки, удалял лишние операторы, чтобы не отвлекали, и видимо пропустил. Хотя и проверяю публикуемое и не один раз проверяю Спасибо за предложение, попробую пока сам на основе новых советов доделать, а потом уже неспеша без ошибок подготовлю если что пример
0
|
||
|
1222 / 1114 / 173
Регистрация: 21.01.2024
Сообщений: 5,099
|
|
| 16.07.2025, 15:17 | |
|
0
|
|
|
-15 / 0 / 0
Регистрация: 12.11.2020
Сообщений: 335
|
||||||
| 16.07.2025, 21:00 [ТС] | ||||||
|
Добрый вечер, voraa!
Склоняюсь к мнению, что не ошибался в плане использования рекурсии и ее применения, если переменные или код на пред. этапе не успеют загрузиться. Хотя и безусловно буду помнить о Вашем мнении при дальнейшей проверки кода на вопрос зацикливания. Почему опять к этому вернулся: формировал последовательный запуск 3-х функций по мере готовности данных из предыдущей. С 2-й функцией frm_mIsk () все хорошо, а вот в 3-й q_zagF2 () уже действительно произошло зацикливание (пришлось поставить счетчик для прерывания) - к тому, что если зацикливание происходит, его действительно легко увидеть. Вот что получилось на текущий момент (пример рабочий), у меня только БД содержит данные, которые действительно формируются в массив m_isk []:
0
|
||||||
|
1222 / 1114 / 173
Регистрация: 21.01.2024
Сообщений: 5,099
|
|
| 16.07.2025, 22:47 | |
|
Вы не пробиваемы, не обучаемы.
Делайте как хотите.
1
|
|
|
-15 / 0 / 0
Регистрация: 12.11.2020
Сообщений: 335
|
||
| 17.07.2025, 08:16 [ТС] | ||
|
0
|
||
|
Заблокирован
|
|
| 17.07.2025, 08:32 | |
|
755, послушай меня еще раз. У тебя главная проблема это не код, а твоя логика. Код написать это ерунда. Важно понимать, как это работает и для чего это надо. Не с бухты-барахты делать асинхронные операции, а по мере необходимости. Разобраться как клиент общается с сервером и как сервер возвращает данные. Ну, и так далее.
2
|
|
|
-15 / 0 / 0
Регистрация: 12.11.2020
Сообщений: 335
|
|||
| 17.07.2025, 21:52 [ТС] | |||
|
За совет отдельное спасибо. Извините, что в целом с советом не согласен: По-моему неразумно судить о чужой логике, о которой практически ничего не знаешь. Хотя согласен с тем, что логика важнее кода. Но и логика не спасет, если не понимаешь каких-то важных механизмов программирования (с этим как раз столкнулся сейчас и сам) Позвольте остаться при своем мнении - с логикой у меня в основном все в порядке (и для такой самоуверенности у меня есть основания). Ну и давайте потерпим (боюсь зарекаться на счет сроков), а когда размещу продукт - вот тогда станет ясно, прав ли был я или большинство из данной темы. А потом вспомнил, что не все так просто - с чего началось изучение асинхронных операций: в одной из предыдущих тем krvsa, помог решить проблему сохранения данных indexedDB, реализовав через промисы. (Это у меня вторая функция). А в ней данный формируются через обработчик событий .onsuccess и, если правильно понял, к сожалению, а м.б. и нет без асинхронных операций не обойтись. Хотя и повторюсь к данному совету: выбору асинхронности пришел сегодня утром и сам, решив асинхронность (как серьезную тему) изучать параллельно с дальнейшим программированием других элементов. Самое главное, мне сейчас надо в первую очередь самому подумать и действительно определиться с алгоритмом
0
|
|||
|
2600 / 1504 / 689
Регистрация: 23.08.2015
Сообщений: 3,804
|
|||||||
| 18.07.2025, 02:16 | |||||||
|
Получается смысл ваших рекурсий - дождаться результата выполнения других функций, хотя промисы сами сигнализируют о своей готовности. Т.е. уже тут вместо переменной idb_db, где вы храните подключение можно везде использовать сам промис К примеру
1
|
|||||||
|
-15 / 0 / 0
Регистрация: 12.11.2020
Сообщений: 335
|
||||||||||||
| 18.07.2025, 10:00 [ТС] | ||||||||||||
|
Доброе утро, sad67man!
Нравится Ваш вариант - естественный, наглядный. Если правильно понял (в моей терминологии):
Да, Вы правильно поняли смысл рекурсии во 2-й функции (почему и считаю, что не происходит зацикливания) - если данные не успели сформироваться, она ждет результата промиса. promise.then (st => { frm_mIsk() ; }) - метод then ставится в очередь и рекурсия срабатывает только при наступлении результата. А для 3-й функции как раз этого и не происходило (причина зацикливания) - не формировался положительный результат промиса f2, поэтому и нашел иное решение (уже без рекурсии):
Но Ваш вариант намного нагляднее и, соответственно, предпочтительнее Ps. Подумал, надо уточнить свою позицию - не хочу, чтобы подумали, что утверждаю что-либо - только вижу такое объяснение (вполне возможно, какие-то рассуждения и ошибочны)
0
|
||||||||||||
|
2600 / 1504 / 689
Регистрация: 23.08.2015
Сообщений: 3,804
|
||||||||||||||||||
| 18.07.2025, 12:24 | ||||||||||||||||||
1
|
||||||||||||||||||
|
-15 / 0 / 0
Регистрация: 12.11.2020
Сообщений: 335
|
||
| 18.07.2025, 12:39 [ТС] | ||
|
Пока только благодарю за советы, нужно время, чтобы с ними ознакомиться и понять, как их внедрить в код - дело в том, что алгоритм у меня сложнее, например, данные для 3-й функции у меня могут формироваться только один раз для ряда запросов, поэтому уже появляется анализ и возможный пропуск функции 2. Прощаюсь на форуме быстрей всего до завтра.
0
|
||
|
2600 / 1504 / 689
Регистрация: 23.08.2015
Сообщений: 3,804
|
|||||||
| 18.07.2025, 13:03 | |||||||
|
В реальном проекте мне трудно представить такую ситуацию.. и это больше похоже на какой-то дикий костыль.. Но даже эту штуку можно обернуть в промис.. Тогда все остальные функции, использующие эти данные хотябы не пострадают) Т.е. можно попытаться этот костыль локализовать
В любом случае такого лучше избегать.. Лучше использовать прямые цепочки.. Если функция f2 не вызывалась, то тогда и не стоит вызывать f3().. Иначе такое будет очень сложно поддерживать, вас потом другие программисты, будут долго вспоминать)
1
|
|||||||
|
-15 / 0 / 0
Регистрация: 12.11.2020
Сообщений: 335
|
||
| 18.07.2025, 19:57 [ТС] | ||
|
Алгоритм работы (примерный) и не единственный: • открытие БД - при запуске режима - асинхронно / f1()/ • анализ - есть ли сформированный массив id или нет + подходит ли он или нет для данного режима - если нет - формирование из хранилища массива id /в нашей терминологии f2() - получается асинхронно из-за особенностей indexedDB, хотя т.к. работа на клиенте - это и не так важно/ • Режим Избранное - работа с данным массивом, в т.ч. и на сервере - / f3()/ Первые два пункта запускаются автоматически при определенных условиях, 3-й же обычный интерактивный режим
0
|
||
|
Заблокирован
|
|||
| 18.07.2025, 20:13 | |||
![]() Хочу задать еще один вопрос. Как думаешь, для чего придумали в программировании функции?
0
|
|||
|
-15 / 0 / 0
Регистрация: 12.11.2020
Сообщений: 335
|
|
| 18.07.2025, 20:24 [ТС] | |
|
0
|
|
|
Заблокирован
|
||
| 18.07.2025, 20:44 | ||
|
0
|
||
|
1222 / 1114 / 173
Регистрация: 21.01.2024
Сообщений: 5,099
|
|
| 18.07.2025, 20:49 | |
|
Я вообще. С большим трудом понимаю назначение IndexedDB.
Делать какое то приложение чисто для себя, для работы на одном устройстве?
0
|
|
| 18.07.2025, 20:49 | |
|
Помогаю со студенческими работами здесь
120
Асинхронность в nodejs
Асинхронность, многопоточность и тд SetTimeout, clearTimeout - асинхронность, однопоточность Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|