-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407

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

13.07.2025, 12:38. Показов 4777. Ответов 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
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3847 / 1706 / 431
Регистрация: 14.03.2022
Сообщений: 4,356
16.07.2025, 14:33
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от 755 Посмотреть сообщение
искал оптимальный вариант
И выбрал самое замудренное...

Цитата Сообщение от 755 Посмотреть сообщение
Другой вариант - css переменные, которые формирую с помощью js
Это, видать, очередной велосипед...
1
 Аватар для voraa
1292 / 1270 / 189
Регистрация: 21.01.2024
Сообщений: 5,868
16.07.2025, 14:43
Цитата Сообщение от 755 Посмотреть сообщение
И не знаю, какой механизм оптимальнее использовать для ожидания загрузки.
Самый обычный механизм - это промисы.
Я бы мог вам показать на вашем примере как это делается, но ваши примеры понять невозможно.
Вы пишете какие то неполные обрывки. Вот сами посмотрите на него? И не глядя в другие места (которых у нас нет) скажите, что такое st_g откуда оно берется, где, когда и какое значение ей присваивается?
0
Заблокирован
16.07.2025, 14:46
Цитата Сообщение от krvsa Посмотреть сообщение
Это, видать, очередной велосипед...
Ты просто не понимаешь логику ТС. Прерывания это обработчики событий. Отправить запрос на сервер это получить данные с LocalStorage, а в улучшенном варианте из десяти функций это данные из IndexedDB. Чел прошаренный. Его на мякине не проведешь
0
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
16.07.2025, 15:07  [ТС]
Цитата Сообщение от voraa Посмотреть сообщение
Вы пишете какие то неполные обрывки. Вот сами посмотрите на него? И не глядя в другие места (которых у нас нет) скажите, что такое st_g откуда оно берется,
voraa, уже извинялся, но считаю не лишним извиниться еще раз за свою невнимательность: мне помогают, поэтому стараюсь проявлять уважение, в частности: чтобы было понятно, но, увы... непросто изменить свою натуру, если уж был у меня и такой случай: домой приезжаю, супруга занесла на кухню диван, а я сразу и не заметил.
- st_g это просто переменная для отладки, удалял лишние операторы, чтобы не отвлекали, и видимо пропустил. Хотя и проверяю публикуемое и не один раз проверяю


Спасибо за предложение, попробую пока сам на основе новых советов доделать, а потом уже неспеша без ошибок подготовлю если что пример
0
 Аватар для voraa
1292 / 1270 / 189
Регистрация: 21.01.2024
Сообщений: 5,868
16.07.2025, 15:17
Цитата Сообщение от krvsa Посмотреть сообщение
Сообщение от 755
Другой вариант - css переменные, которые формирую с помощью js
Это, видать, очередной велосипед...
Ну вообще то иногда приходится и так делать.
0
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
16.07.2025, 21:00  [ТС]
Добрый вечер, voraa!
Склоняюсь к мнению, что не ошибался в плане использования рекурсии и ее применения, если переменные или код на пред. этапе не успеют загрузиться. Хотя и безусловно буду помнить о Вашем мнении при дальнейшей проверки кода на вопрос зацикливания.
Почему опять к этому вернулся: формировал последовательный запуск 3-х функций по мере готовности данных из предыдущей.
С 2-й функцией frm_mIsk () все хорошо, а вот в 3-й q_zagF2 () уже действительно произошло зацикливание (пришлось поставить счетчик для прерывания) - к тому, что если зацикливание происходит, его действительно легко увидеть.

Вот что получилось на текущий момент (пример рабочий), у меня только БД содержит данные, которые действительно формируются в массив m_isk []:

JavaScript
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
 var k_iter= 0;
 
 var idb_nam_db= ["myBase", 1];
 var idb_nam_xr= "isk_arKv";
 idb_nam_xr= "film";
 
 var idb_db;        // db
 
 var m_isk = new Array;
 
 
// =================================
promise = idb_open();       // имя объекта промиса
promise.then (st => { idb_db= st; })        // результат промиса 
frm_mIsk ();
q_zagF2 ();
 
 
function idb_open ()  {
    return new Promise(function(resolve, reject) {
    //promise= new Promise(function(resolve, reject) {
    const openRequest = indexedDB.open(idb_nam_db[0], idb_nam_db[1]); 
 
 openRequest.onupgradeneeded = function() {
     alert ("Сработало событие 'onupgradeneeded'");
    idb_db = openRequest.result;
    let store = idb_db.createObjectStore('isk_arKv', { autoIncrement: true });
 };
 
    openRequest.onsuccess = () => resolve(openRequest.result);
 
    openRequest.onerror = function () {
            reject(openRequest.error);
        }
    })
}
 
 
// ===========================
function idb_frmMas (nm_xr) {
    return new Promise((resolve, reject) => {
    //   let nm_xr= 'film';
    //   nm_xr= 'isk_arKv';
    //alert (nm_xr)
        const txn = idb_db.transaction(nm_xr, 'readonly');
        const p_xr = txn.objectStore(nm_xr);
        let query = p_xr.getAll();
        query.onsuccess = (event) =>{
            const m = event.target.result;
            resolve(m ? m : null);
        };
        query.onerror = err => reject(err.target.errorCode)
    })
}
 
var prom;
 
function frm_mIsk ()  {
 prom=  new Promise((resolve, reject) => {
 if (typeof idb_db === 'undefined') {
        //alert ("frm_mIsk () │ undefined ")
        inf2.innerHTML =  "ERROR │ typeof (idb_db) === 'undefined'";
        promise.then (st => { frm_mIsk() ; return;  })  // alert (" * 1 *");
 
 }
 
 else   {
    //alert ("frm_mIsk () │ Запуск функции ")
    let idb_nam_xr= "isk_arKv";
 
    idb_frmMas (idb_nam_xr)
    // idb_frmMas ()
        .then(m => {
            if (m) {m_isk= m; alert (m_isk); inf1.innerHTML = " m_isk= "+ m_isk; }  // alert (m_isk)
            else inf2.innerHTML = "  "+ nam_xr+ " empty !!!"
        })
        .catch(err => inf2.innerHTML = "onerror │ "+ err)
 
    inf2.innerHTML = " ";
 }
 })
}
 
 
// =========================================
function q_zagF2 ()     {
if (typeof m_isk[0] === 'undefined')    {
    alert ("frm_mIsk () │ typeof (m_isk)= "+ typeof (m_isk)+
        "\n m_isk[0]="+ m_isk[0]+ "\n m_isk[1]="+ m_isk[1]); 
    k_iter++;
    if (k_iter < 3)
        prom.then (q_zagF2 ())  //alert ("frm_mIsk ()");
    else
        alert ("ERROR ! k_iter>=3 ==" + k_iter )
 
}
else    {
 
    alert ("q_zagF2 │ k_iter= "+ k_iter)
    alert ("q_zagF2 │ m_isk= "+ m_isk)    
 
}   
}
0
 Аватар для voraa
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  [ТС]
Цитата Сообщение от voraa Посмотреть сообщение
Вы не пробиваемы, не обучаемы.
Делайте как хотите.
Независимо от Вашего мнения, благодарю Вас и всех, помогавших в теме, за помощь - она была очень полезной.
0
Заблокирован
17.07.2025, 08:32
755, послушай меня еще раз. У тебя главная проблема это не код, а твоя логика. Код написать это ерунда. Важно понимать, как это работает и для чего это надо. Не с бухты-барахты делать асинхронные операции, а по мере необходимости. Разобраться как клиент общается с сервером и как сервер возвращает данные. Ну, и так далее.
2
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
17.07.2025, 21:52  [ТС]
Цитата Сообщение от black1385 Посмотреть сообщение
У тебя главная проблема это не код, а твоя логика. Код написать это ерунда. Важно понимать, как это работает и для чего это надо. Не с бухты-барахты делать асинхронные операции, а по мере необходимости. Разобраться как клиент общается с сервером и как сервер возвращает данные.
black1385, прошу прощения, ошибся, думал ничего, кроме язвительности от вас нельзя ожидать, поэтому не интересовался темой.

За совет отдельное спасибо.

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

Цитата Сообщение от black1385 Посмотреть сообщение
Не с бухты-барахты делать асинхронные операции
Только сегодня утром подумал, а зачем мне асинхронная работа трех функций последовательно, если для работы третьей нужны данные второй - стоит от нее отказаться.
А потом вспомнил, что не все так просто - с чего началось изучение асинхронных операций: в одной из предыдущих тем krvsa, помог решить проблему сохранения данных indexedDB, реализовав через промисы. (Это у меня вторая функция). А в ней данный формируются через обработчик событий .onsuccess и, если правильно понял, к сожалению, а м.б. и нет без асинхронных операций не обойтись.
Хотя и повторюсь к данному совету: выбору асинхронности пришел сегодня утром и сам, решив асинхронность (как серьезную тему) изучать параллельно с дальнейшим программированием других элементов.

Самое главное, мне сейчас надо в первую очередь самому подумать и действительно определиться с алгоритмом
0
 Аватар для sad67man
2604 / 1508 / 689
Регистрация: 23.08.2015
Сообщений: 3,840
18.07.2025, 02:16
Цитата Сообщение от 755 Посмотреть сообщение
Пример простой:
1. f1() - открытие БД indexedDB
2. f2(имя хранилища) - чтение данных из заданного хранилища → m_dat[]
3. f3() - использование m_dat[] (у меня не успевают сформироваться)
А вот для этого случая и мне рекурсия не нравится. Пытаюсь найти другое решение
Ну тут конечно возникает вопрос, а что у вас 3-я функция сама лезет куда-то за данными в глобальную область видимости? Почему их нельзя передать в качестве параметра?

Получается смысл ваших рекурсий - дождаться результата выполнения других функций, хотя промисы сами сигнализируют о своей готовности. Т.е. уже тут вместо переменной idb_db, где вы храните подключение можно везде использовать сам промис

К примеру
JavaScript
1
2
3
4
5
6
7
8
9
let dbPromise = getDb();
let dataPromise = getData(dbPromise);
useData(dataPromise);
 
function useData(dataPromise => {
  dataPromise.then(data => { // дожидаемся получения данных.. если они уже получена, то then сработает сразу.
    alert(data[0])
  })
})
1
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
18.07.2025, 10:00  [ТС]
Доброе утро, sad67man!
Нравится Ваш вариант - естественный, наглядный.
Если правильно понял (в моей терминологии):
JavaScript
1
2
let dbPromise = getDb(); // открытие БД indexedD
let dataPromise = getData(dbPromise);  // чтение данных из заданного хранилища
Не знаю, подойдет ли к моему случаю, но попробую (подумаю над его реализацией).

Цитата Сообщение от sad67man Посмотреть сообщение
Почему их нельзя передать в качестве параметра?
Возможно, можно, но они у меня определены как глобальные, потому что используются в разных местах кода - поэтому и не вижу смысла в передаче их как параметров

Да, Вы правильно поняли смысл рекурсии во 2-й функции (почему и считаю, что не происходит зацикливания) - если данные не успели сформироваться, она ждет результата промиса.
promise.then (st => { frm_mIsk() ; }) - метод then ставится в очередь и рекурсия срабатывает только при наступлении результата.
А для 3-й функции как раз этого и не происходило (причина зацикливания) - не формировался положительный результат промиса f2, поэтому и нашел иное решение (уже без рекурсии):

JavaScript
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
function frm_mIsk ()  {
 prom=  new Promise((resolve, reject) => {
 if (typeof idb_db === 'undefined') {
        promise.then (st => { frm_mIsk() ; })   // alert (" * 1 *");
 }
 
 else   {
    let idb_nam_xr= "isk_arKv";
     idb_frmMas (idb_nam_xr)
        .then(m => {
        // let nam_fun= "q_zagF2";
            if (m) {m_isk= m; window [nam_fun](); }  // данные сформированы - можно вызвать f3()
            else inf2.innerHTML = "  "+ nam_xr+ " empty !!!"
        })
        .catch(err => inf2.innerHTML = "onerror │ "+ err)
 }
 })
}
 
function q_zagF2 ()     {
if (typeof m_isk[0] === 'undefined')    {
    nam_fun= "q_zagF2";
}
else    {
    alert ("q_zagF2 │ m_isk= "+ m_isk)    
    // выполняются какие-то действия
}   
}
По логике также используется готовность промиса и он вызывает 3-ю функцию, если нужная переменная не определена

Но Ваш вариант намного нагляднее и, соответственно, предпочтительнее

Ps.
Подумал, надо уточнить свою позицию - не хочу, чтобы подумали, что утверждаю что-либо - только вижу такое объяснение (вполне возможно, какие-то рассуждения и ошибочны)
0
 Аватар для sad67man
2604 / 1508 / 689
Регистрация: 23.08.2015
Сообщений: 3,840
18.07.2025, 12:24
Цитата Сообщение от 755 Посмотреть сообщение
если данные не успели сформироваться, она ждет результата промиса.
Цитата Сообщение от 755 Посмотреть сообщение
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function frm_mIsk ()  {
 prom=  new Promise((resolve, reject) => {
 if (typeof idb_db === 'undefined') {
        promise.then (st => { frm_mIsk() ; })   // alert (" * 1 *");
 }
else   {
    let idb_nam_xr= "isk_arKv";
     idb_frmMas (idb_nam_xr)
        .then(m => {
        // let nam_fun= "q_zagF2";
            if (m) {m_isk= m; window [nam_fun](); }  // данные сформированы - можно вызвать f3()
            else inf2.innerHTML = "  "+ nam_xr+ " empty !!!"
        })
        .catch(err => inf2.innerHTML = "onerror │ "+ err)
 }
 })
}
Ну вот допустим здесь, зачем рекурсия, когда можно просто всегда ожидать промис, ведь он сохраняет результат.
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function frm_mIsk() {
    prom = new Promise((resolve, reject) => {
        promise.then(idb_db => {
            let idb_nam_xr = "isk_arKv";
            idb_frmMas(idb_nam_xr)
                .then(m => {
                    // let nam_fun= "q_zagF2";
                    if (m) {
                        m_isk = m;
                        window [nam_fun]();
                    } // данные сформированы - можно вызвать f3()
                    else inf2.innerHTML = " " + nam_xr + " empty !!!"
                })
                .catch(err => inf2.innerHTML = "onerror │ " + err)
        })
    })
}
По поводу вызорва f3().. то что она и обрабатывает данные и сама проверяет - это уже нарушение принципов.. тут как минимум лучше разделить на 2 функции, одна непосредственно обрабатывает данные, а другая уже управляющая, которая принимает решение когда и как ее вызывать..

JavaScript
1
window [nam_fun]();
Ну вот вы по сути использовали мою идею, когда вы подставляете функцию, и она сама вызывается по готовности.. но это лишняя зависимость. Наверное более грамотно выкидывать событие о готовности данных. Вы даже можете их передать.

JavaScript
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
let m_isk = [];
 
function frm_mIsk() {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            m_isk = ['test1', 'test2'];
            window.dispatchEvent( new CustomEvent('m_isk.ready', {detail : m_isk}) );
        }, 2000);
    })
}
 
function useData(data) {
    alert(data[0]);
}
 
function waitUseData() {
    if (typeof m_isk[0] === 'undefined')    {
        window.addEventListener('m_isk.ready', (event) => {
            useData(event.detail);
        }, {once: true});
 
        return;
    }
 
    useData(m_isk);
}
 
 
frm_mIsk();
waitUseData();
1
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
18.07.2025, 12:39  [ТС]
Цитата Сообщение от sad67man Посмотреть сообщение
Ну вот вы по сути использовали мою идею, когда вы подставляете функцию, и она сама вызывается по готовности.. но это лишняя зависимость.
sad67man, к этой идеи мы пришли параллельно, а это говорит о том, что она действительно заслуживает внимания. Хотя Ваша реализация интереснее.

Пока только благодарю за советы, нужно время, чтобы с ними ознакомиться и понять, как их внедрить в код - дело в том, что алгоритм у меня сложнее, например, данные для 3-й функции у меня могут формироваться только один раз для ряда запросов, поэтому уже появляется анализ и возможный пропуск функции 2.

Прощаюсь на форуме быстрей всего до завтра.
0
 Аватар для sad67man
2604 / 1508 / 689
Регистрация: 23.08.2015
Сообщений: 3,840
18.07.2025, 13:03
Цитата Сообщение от 755 Посмотреть сообщение
к этой идеи мы пришли параллельно, а это говорит о том, что она действительно заслуживает внимания. Хотя Ваша реализация интереснее.
Ну наверное это имеет смысл когда нам не известно выpывалась ли функция f2 - и будет ли вообще вызвана и когда она все-таки будет вызвана в будущем нам нужно как-то к ней прицепиться..
В реальном проекте мне трудно представить такую ситуацию.. и это больше похоже на какой-то дикий костыль..

Но даже эту штуку можно обернуть в промис.. Тогда все остальные функции, использующие эти данные хотябы не пострадают) Т.е. можно попытаться этот костыль локализовать

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function waitData() {
    return new Promise((resolve) => {
        if (typeof m_isk[0] === 'undefined')    {
            window.addEventListener('m_isk.ready', (event) => {
                resolve(event.detail);
            }, {once: true});
 
            return;
        }
        resolve(m_isk);
    });
}
 
waitData().then(data => {
    useData(data);
})
Тогда эту штуку кстати можно будет повторно использовать.

В любом случае такого лучше избегать.. Лучше использовать прямые цепочки.. Если функция f2 не вызывалась, то тогда и не стоит вызывать f3().. Иначе такое будет очень сложно поддерживать, вас потом другие программисты, будут долго вспоминать)
1
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
18.07.2025, 19:57  [ТС]
Цитата Сообщение от sad67man Посмотреть сообщение
когда нам не известно выpывалась ли функция f2 - и будет ли вообще вызвана и когда она все-таки будет вызвана в будущем нам нужно как-то к ней прицепиться..
В реальном проекте мне трудно представить такую ситуацию.. и это больше похоже на какой-то дикий костыль..
Ну почему же, вот Вам примерный пример того, что планирую реализовать: будет массив id выбранных элементов для раздела Избранное (встречается часто: в кадрах, недвижимости, маркетплейсах, ..). Мало того, Избранное у меня может еще классифицироваться по какому-либо признаку. Храниться id будут в indexedDB (это гораздо удобнее, чем sql).

Алгоритм работы (примерный) и не единственный:
• открытие БД - при запуске режима - асинхронно / f1()/
• анализ - есть ли сформированный массив id или нет + подходит ли он или нет для данного режима
- если нет - формирование из хранилища массива id /в нашей терминологии f2() - получается асинхронно из-за особенностей indexedDB, хотя т.к. работа на клиенте - это и не так важно/
• Режим Избранное - работа с данным массивом, в т.ч. и на сервере - / f3()/
Первые два пункта запускаются автоматически при определенных условиях, 3-й же обычный интерактивный режим
0
Заблокирован
18.07.2025, 20:13
Цитата Сообщение от 755 Посмотреть сообщение
Избранное у меня может еще классифицироваться по какому-либо признаку. Храниться id будут в indexedDB (это гораздо удобнее, чем sql).
Цитата Сообщение от 755 Посмотреть сообщение
Режим Избранное - работа с данным массивом, в т.ч. и на сервере
То есть, будешь работать на сервере с массивом, который выдернешь из indexedDB, потому что это удобнее? Да... это логика очень интересная. Я бы даже сказал, очень оригинальная
Хочу задать еще один вопрос. Как думаешь, для чего придумали в программировании функции?
0
-62 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 407
18.07.2025, 20:24  [ТС]
Цитата Сообщение от black1385 Посмотреть сообщение
Как думаешь, для чего придумали в программировании функции?
Не думал и не думаю, что кому-то будут интересны по этому поводу мои думы
0
Заблокирован
18.07.2025, 20:44
Цитата Сообщение от 755 Посмотреть сообщение
Не думал и не думаю
Я тогда расскажу, как я думаю. Функции придумали, что бы не дублировать код и вызывать их из различных частей программы многократно. Нет смысла писать код функцию и использовать её только один раз. Это противоречит здравому смыслу.
0
 Аватар для voraa
1292 / 1270 / 189
Регистрация: 21.01.2024
Сообщений: 5,868
18.07.2025, 20:49
Я вообще. С большим трудом понимаю назначение IndexedDB.
Делать какое то приложение чисто для себя, для работы на одном устройстве?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.07.2025, 20:49
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
120
Ответ Создать тему
Опции темы

Новые блоги и статьи
Благородство как наказание
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
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru