|
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
|
|||||||||||
Асинхронность - раздельный запуск функций13.07.2025, 12:38. Показов 4777. Ответов 130
Метки нет (Все метки)
Пришел к тому, что давно пора было заняться вопросами, связанными с асинхронностью (как не раз советовали более опытные товарищи). И вот появился вопрос, если кого не затруднит с ответом:
f0 () и f0_1 () запускаются независимо. Причем f0 () сразу же и только один раз. f0_1 () может запускаться неоднократно. Но вот при первом запуске f0_1 () переменная p0 может не успеть сформировать. И не знаю, какой механизм оптимальнее использовать для ожидания загрузки.
0
|
|||||||||||
| 13.07.2025, 12:38 | |
|
Ответы с готовыми решениями:
130
Как сделать раздельный скроллинг вертикальных блоков, как на news.mail.ru? Асинхронность javascript NodeJS асинхронность |
|
3847 / 1706 / 431
Регистрация: 14.03.2022
Сообщений: 4,356
|
|
| 16.07.2025, 14:33 | |
|
1
|
|
|
1292 / 1270 / 189
Регистрация: 21.01.2024
Сообщений: 5,868
|
||
| 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
|
||
|
1292 / 1270 / 189
Регистрация: 21.01.2024
Сообщений: 5,868
|
|
| 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
|
||||||
|
1292 / 1270 / 189
Регистрация: 21.01.2024
Сообщений: 5,868
|
|
| 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,840
|
|||||||
| 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,840
|
||||||||||||||||||
| 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,840
|
|||||||
| 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
|
||
|
1292 / 1270 / 189
Регистрация: 21.01.2024
Сообщений: 5,868
|
|
| 18.07.2025, 20:49 | |
|
Я вообще. С большим трудом понимаю назначение IndexedDB.
Делать какое то приложение чисто для себя, для работы на одном устройстве?
0
|
|
| 18.07.2025, 20:49 | |
|
Помогаю со студенческими работами здесь
120
Асинхронность в nodejs
Асинхронность, многопоточность и тд SetTimeout, clearTimeout - асинхронность, однопоточность Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
|
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2.
Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
|
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2.
Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом.
В. . .
|
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2.
Задача: отобразить спецтехнику, которая на данный момент находится в ремонте.
Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
|
|
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
|
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|