Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407

Асинхронность - раздельный запуск функций

13.07.2025, 12:38. Показов 4928. Ответов 130
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пришел к тому, что давно пора было заняться вопросами, связанными с асинхронностью (как не раз советовали более опытные товарищи). И вот появился вопрос, если кого не затруднит с ответом:

HTML5
1
2
3
4
 <button onclick = "f0_1 ();" class="knReg_but" > f0_1 </button>
 <br><br>
 <span id="inf1" class= "abs" style="color: darkblue;">     </span>
 <span id="inf2"  style="color: red;">  </span>
JavaScript
1
2
3
4
5
6
7
8
9
10
 f0 ();
 
function f0 () { 
   setTimeout("p0 = '111111111111';", 3000);
}
function f0_1 () { 
 if (typeof (st_g) !== 'undefined')
     inf1.innerHTML = p0;   
 inf2.innerHTML = typeof (p0);
}
Пример тестовый. В чем сложность.
f0 () и f0_1 () запускаются независимо. Причем f0 () сразу же и только один раз.
f0_1 () может запускаться неоднократно. Но вот при первом запуске f0_1 () переменная p0 может не успеть сформировать. И не знаю, какой механизм оптимальнее использовать для ожидания загрузки.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.07.2025, 12:38
Ответы с готовыми решениями:

Как сделать раздельный скроллинг вертикальных блоков, как на news.mail.ru?
Образец: http://news.mail.ru/inregions/siberian/55/economics/11958019/?frommail=1 Если страницу...

Асинхронность javascript
Не уверен, является ли то, о чём хочу спросить, асинхронностью. И может я чего-то не понимаю. Но...

NodeJS асинхронность
Помогите разобраться с асинхронностю. var test = function(data, callback){ for(var i = 0;...

130
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
14.07.2025, 11:03  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Usaga Посмотреть сообщение
Вообще-то, именно кнопка "Показать" и должна инициировать запрос на сервер. Или она должна быть заблокирована, пока ранее сформированный запрос не разрешится.
Ее действительно блокирую, но не оп признаку окончания формирования запроса (это внутренний механизм и он Пользователю не интересен), а до того момента, пока не выбраны все необходимые параметры (этот механизм Пользователю понятен и его не должно волновать, что внутри) -
выбрал все параметры - кнопка "Показать" разблокировалась - нажал на нее - массив сформирован - страница вывелась сразу же без задержки (в 98% случаев так и должно быть и так и происходит), а вот для этих 2% мне и нужно найти решение
0
14.07.2025, 11:05

Не по теме:

Я заметил, что когда начинаешь спорить с ИИ, то он начинает с вами соглашаться. Думаю, надо взять это себе на вооружение. Потом что некоторым невозможно что-то объяснить или доказать.

1
Эксперт .NET
 Аватар для Usaga
14367 / 9468 / 1360
Регистрация: 21.01.2016
Сообщений: 35,721
14.07.2025, 11:06
Цитата Сообщение от 755 Посмотреть сообщение
страница вывелась сразу же без задержки
Чтобы так было, страница сразу должна содержать все нужные данные. Тогда задержка просто переносится на загрузку всей страницы целиком.

А если данные запрашиваются отдельно, после загрузки страницы, то задержка будет. Её можно только приукрасить красивым спиннером (loading indicator).
1
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
14.07.2025, 11:08  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Для отладки люди используют отладчик.
Тоже им пользовались (если не подводит память именно здесь на форуме подсказали о наличии таковых), но вот переменные (возможно по незнанию) просматриваю через свою функцию (не знаю, как в других браузерах, но в опере мне лишний раз отладчик открывать неудобно- занимает полстраницы - возможно не разобрался с его функционалом), а свою гораздо удобнее и главное быстрее.
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3857 / 1753 / 432
Регистрация: 14.03.2022
Сообщений: 4,439
14.07.2025, 11:09
755, видно "объяснение" не является твоей сильной стороной...
Я для чего тебе показал работающий пример?
Для того чтобы ты на его основе сделал свой, на котором будет понятнее что ты там реализовываешь.
Если оно тебе не важно - это уже другое дело...
0
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
14.07.2025, 11:22  [ТС]
Цитата Сообщение от black1385 Посмотреть сообщение
Не по теме:
Я заметил, что когда начинаешь спорить с ИИ, то он начинает с вами соглашаться. Думаю, надо взять это себе на вооружение. Потом что некоторым невозможно что-то объяснить или доказать.
Недавно был у меня случай: дочка с супругой доказывали, что от Москвы до Домодедово 35-55 км, показывая ответы из интернета и на мое мнение, что такого быть не может, а только 15-16 км назвали меня упертым.
И так видимо и считали до тех пор, пока не отправил скрин с яндекс карты с линейкой.

Ps. Почему-то, если человек имеет свое мнение и его не могут убедить аргументами, которые он считает недостаточными, ему вешают ярлык упрямый или упертый.
0
Эксперт .NET
 Аватар для Usaga
14367 / 9468 / 1360
Регистрация: 21.01.2016
Сообщений: 35,721
14.07.2025, 11:26
755, ну, в твоих темах смесь двух нехороших вещей: неумение донести свою мысль и неумение прислушаться к рекомендациям. Вроде бы проблема (если я правильно понял) типовая, давно решённая. krvsa даже один из вариантов кода показал (можно разными путями сделать). А ты всё мурыжишь вопрос, который не понятно во что упирается...
0
Заблокирован
14.07.2025, 11:40
Цитата Сообщение от 755 Посмотреть сообщение
назвали меня упертым
Значит не я один такой
Цитата Сообщение от 755 Посмотреть сообщение
только 15-16 км
Цитата Сообщение от 755 Посмотреть сообщение
скрин с яндекс карты
0
Молодой техлид)
Эксперт JSЭксперт HTML/CSS
 Аватар для mr_dramm
1818 / 1056 / 329
Регистрация: 17.07.2021
Сообщений: 2,147
Записей в блоге: 14
14.07.2025, 11:53
Цитата Сообщение от 755 Посмотреть сообщение
а свою гораздо удобнее и главное быстрее.
т.е. нажать 2 - 10 кнопок это сложнее чем писать свой отладчик по твоему?)

на счет занимает место панель отладки тут рекоммендация работать на 2+ мониторах окно dev tools можно сделать отдельным окном от браузера

а еще если исключить нюнсы работы со средой исполнения js очень удобно использовать среды исполнения JS например NodeJS

ассинхронный чистый js там работает также как и в браузере, но работа с консолью и отладчиком на порядок удобнее если использовать бесплатный редактор VSCode не нужен будет браузер чтобы ищзучить все основы js
1
Эксперт .NET
 Аватар для Usaga
14367 / 9468 / 1360
Регистрация: 21.01.2016
Сообщений: 35,721
14.07.2025, 12:01
Цитата Сообщение от 755 Посмотреть сообщение
но вот переменные (возможно по незнанию) просматриваю через свою функцию
У тебя в коде и так адище творится, а ты его ещё и своими отладочными вставками разбавляешь)

То, что тебе быстрее костылик воткнуть, чем освоить отладчик это очевидно. Но то, что такой подход быстрее, чем взять в руки отладчик - нет.

Если хочешь продуктивно разработкой заниматься, а не часами время в трубу выбрасывать, то надо бы освоить отладчик.
1
 Аватар для voraa
1296 / 1282 / 190
Регистрация: 21.01.2024
Сообщений: 5,937
14.07.2025, 12:20
Цитата Сообщение от 755 Посмотреть сообщение
а вот для этих 2% мне и нужно найти решение
Самое простое решение - переписать все нафиг, не придумывать свои костыльные алгоритмы, а использовать общие проверенные людьми и временем решения.

Заполнили поля,
Нажали кнопку "показать!"
Делаем запрос на сервер.
Ждем ответа. Когда ответ пришел, показываем его.

Что может быть проще и логичнее?
0
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
14.07.2025, 13:53  [ТС]

Не по теме:

black1385, не уточнил (думал это естественно) речь у нас шла от МКАД, а не от центра Москвы (не думаю, что нужен скрин, и думал будет достаточно слова: раз сказал отправил скрин - значит он был , а не придумал его) - вроде бы все фирмы считают расстояние от МКАД.



Добавлено через 1 час 22 минуты
Цитата Сообщение от krvsa Посмотреть сообщение
Я для чего тебе показал работающий пример?
Для того чтобы ты на его основе сделал свой, на котором будет понятнее что ты там реализовываешь.
Если оно тебе не важно - это уже другое дело...
krvsa, не думаю, что есть что-то постыдное признаться в том, что не хватает знаний для понимание того примера. Поэтому пока его не могу оценить, а тем более сделать что-то похожее.
Кроме того просто не понимаю, что можно сделать, чтобы меня можно было понять.

Поэтому подумал, правильным будет решение попробовать самому исправить данную ситуацию (тем более, что мне уже ранее подсказали возможный вариант решения).

Цитата Сообщение от Usaga Посмотреть сообщение
а ты его ещё и своими отладочными вставками разбавляешь)
Да нет никаких вставок, а есть всего лишь кнопка вызова функции вывода переменных и массивов памяти на тек. момент.
Но не претендую на то. что это лучший метод - повторюсь, не знал, как в отладчике смотреть ОП да и не думаю, что мне это нужно - меня устраивает мой метод.

Цитата Сообщение от voraa Посмотреть сообщение
Самое простое решение - переписать все нафиг, не придумывать свои костыльные алгоритмы, а использовать общие проверенные людьми и временем решения.
voraa, честно удивлен таким советом. То, что это самый простой алгоритм, ясно для всех. Логичный? Логика есть разная: пользовательская и программная. С точки зрения Пользователя что стандартный алгоритм, что мой (как Вы его назвали "костыльный") ничем не отличаются, а вот с точки зрения программной логики мой намного лучше, хоть и сложнее.
Но, не зная его, вы не можете их сравнить и соответственно судить. Я же убежден в этом, поэтому и не собираюсь менять алгоритм. Ну а время уже покажет, прав ли или ошибаюсь.

И, учитывая, что это не тема Алгоритмы, не думаю, что его стоит здесь обсуждать подробнее, тем более все участвующие в диалоге уверены в том, что мой путь ведет в никуда.

Повторюсь, благодаря вашей помощи попробую решить проблему дальше самостоятельно.
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3857 / 1753 / 432
Регистрация: 14.03.2022
Сообщений: 4,439
14.07.2025, 14:15
Цитата Сообщение от 755 Посмотреть сообщение
Кроме того просто не понимаю, что можно сделать, чтобы меня можно было понять.
Обычный тестовый пример многое может объяснить. Не куски, как ты ранее показывал... Т.е. нечто понятное и работающее.
Для понимания я показал именно такой пример.
- Запросил данные.
- Отправил запрос на сервер.
- Получил ответ.
- Показал его на странице.
Сейчас переделаю на твой алгоритм...

Добавлено через 9 минут
Цитата Сообщение от 755 Посмотреть сообщение
у меня другой алгоритм (упрощенно выглядит так):
- Заполнили какие-то поля (например, выбрали вид товара - ТВ, марку,...
- программа формирует запрос на сервер - там формируется форма. В моем примере ответ от сервера обрабатывается в f21_ret_1 () . То, что назвал Действие 1
- Нажали кнопку Показать.
- Полученный ранее ответ выводится на экран. - f21 ()
Вот вариант 1 в 1, как по мне...

PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<style>
ul {
    list-style-type: none;
}
</style>
 
<form>
    <label>
        <span>Сколько шуток показать?</span>
        <select>
            <option>1</option>
            <option>5</option>
            <option>10</option>
        </select>
    <label>
    <button id='snd'>Запрос</button>
    <button id='shv' disabled>Показать шутки</button>
</form>
<ul></ul>
<template>
    <li>
        <details>
            <summary></summary>
            <p></p>
        </details>
    </li>
</template>
 
 
<script>
 
const url = 'https://official-joke-api.appspot.com/jokes/random/'
const ou = document.querySelector('ul')
const ol = document.querySelector('template').content.querySelector('li')
let arr = []
document.querySelector('form').addEventListener('submit', e => {
    e.preventDefault()
    snd.disabled = true
    shv.disabled = true
    const n = document.querySelector('select').value
    fetch(url + n)
        .then(r => r.json())
        .then(a => (console.log(a), arr = a))
        .catch(console.log)
        .finally(_ => {
            snd.disabled = false
            shv.disabled = false
        })
})
shv.addEventListener('click', e => {
    ou.innerHTML = ''
    arr.forEach(fnc)
    shv.disabled = true
})
function fnc(obj){
    const o = ol.cloneNode(true)
    o.querySelector('summary').textContent = obj.setup
    o.querySelector('p').textContent = obj.punchline
    ou.insertAdjacentElement('beforeend', o)
}
</script>
1
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
14.07.2025, 14:19  [ТС]
Спасибо большое, krvsa, хотя, извините, никак не могу понять, где в коде php (пытался еще в предыдущем примере понять)
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3857 / 1753 / 432
Регистрация: 14.03.2022
Сообщений: 4,439
14.07.2025, 14:24
Цитата Сообщение от 755 Посмотреть сообщение
где в коде php
Оно тут - https://official-joke-api.apps... es/random/
По этому адресу.

Добавлено через 1 минуту
Не факт что именно ПХП... Но данные по шуткам выдает именно этот ресурс.
Есть ряд фейковых АПИ, для тренировок, которые предоставляют возможность работать со своими серверами любым желающим.
1
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
14.07.2025, 14:30  [ТС]
Спасибо, но мне нужно время, чтобы понять данные примеры - поэтому пока могу только поблагодарить за помощь
0
Эксперт .NET
 Аватар для Usaga
14367 / 9468 / 1360
Регистрация: 21.01.2016
Сообщений: 35,721
14.07.2025, 15:01
755, очень интересно) Твой подход лучше общепринятых, но при этом не работает. Но лучше. Но не работает.

И лучшесть и в чем?
0
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
14.07.2025, 16:02  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Твой подход лучше общепринятых, но при этом не работает. Но лучше. Но не работает.
Usaga,между работает/не работает и лучше/хуже нет взаимосвязи - любой программа может содержать ошибки, которые устраняются, а лучше/хуже - это особенность алгоритма.

Цитата Сообщение от Usaga Посмотреть сообщение
И лучшесть и в чем?
Как говорил один персонаж, это элементарно: при моем варианте пользователю не надо ждать после нажатия кнопки "Показать" обращение к БД, поиск нужных вариантов по фильтрам, формирование выходной формы. Возможно, при небольшом объеме БД разница будет не так заметна, но в любом случае она будет всегда - и это даже не высшая математика.

А то, что исправлю - сомнений не вызывает. Как писал ранее, вариант мне здесь подсказали
0
Эксперт .NET
 Аватар для Usaga
14367 / 9468 / 1360
Регистрация: 21.01.2016
Сообщений: 35,721
14.07.2025, 16:09
Цитата Сообщение от 755 Посмотреть сообщение
ежду работает/не работает и лучше/хуже нет взаимосвязи - любой программа может содержать ошибки, которые устраняются, а лучше/хуже - это особенность алгоритма.
Да вообще-то взаимосвязь прямая. Если оно не работает, то но ни по каким метрикам не лучше.

Цитата Сообщение от 755 Посмотреть сообщение
при моем варианте пользователю не надо ждать после нажатия кнопки "Показать" обращение к БД, поиск нужных вариантов по фильтрам, формирование выходной формы. Возможно, при небольшом объеме БД разница будет не так заметна, но в любом случае она будет всегда - и это даже не высшая математика.
Ну да, математикой тут и не пахнет. Ты сразу на уровень магии решил перейти?) Ты каким образом собрался гарантировать, что запрос отработает быстрее, чем пользователь нажмёт на "Показать"? Код свой перекрестишь или что?

Или если ничего не понимаешь, то всё возможно?)
0
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
14.07.2025, 16:33  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Ты каким образом собрался гарантировать, что запрос отработает быстрее, чем пользователь нажмёт на "Показать"?
Потому что формирование формы начнется до нажатия на "Показать" и быстрей всего она уже будет сформирована, пока пользователь будет подносить руку к кнопке "Показать". Останется только ее вывести.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.07.2025, 16:33

Асинхронность
Всем привет) Я новичек в ноде, разрабатываю веб сервер. this.tokens.get(token, function(msg,...

Асинхронность в nodejs
Здравствуйте, никак не пойму как работает асинхронность в nodejs, к примеру пускай есть 2 события...

Асинхронность в js
почему в консоле не находит переменную obj, но когда убираю setTimout, только тогда находит ...

Асинхронность, многопоточность и тд
Здравствуйте! Есть NodeJS, подписка на события(приходят по websocket) и много условий if .....

SetTimeout, clearTimeout - асинхронность, однопоточность
Как это работает? почему, запуская множество setTimeout, внутри setInterval, фиксируя остановку...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал. Оно само - говорит. Кто слышит тот слышит.
Оказывается, Unreal Engine позволяет качество на порядки выше, чем было в Lineedge
Etyuhibosecyu 05.07.2026
Жаль, конечно, что я не узнал об этом, пока Lineedge существовала, а то бы Noname2331 написал, что волки превращаются в пиксельную кашу, а я бы его попросил скачать какую-нибудь бриллиантовую или Pro. . .
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru