2 / 2 / 0
Регистрация: 09.08.2015
Сообщений: 192

Синхронное выполнение и setTimeout(), чтобы перезагрузка была после setTimeout()

26.06.2025, 10:17. Показов 1821. Ответов 34
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем здравствуйте

Есть код

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
function reset_btn_gen(is_refresh){
    var $btn=$j('#https_gen_bn');
    $btn.removeClass('alert-error').removeClass('alert-success');
    $btn.val('<#VPNS_GenNew#>');
    if (is_refresh)
        location.href = location.href;
}
 
function create_server_cert() {
    if(!confirm('<#Adm_System_https_query#>'))
        return false;
    var $btn=$j('#https_gen_bn');
    flashing_btn_gen(1);
    $btn.addClass('alert-error');
    $j.ajax({
        type: "post",
        url: "/apply.cgi",
        data: {
            action_mode: " CreateCertHTTPS ",
            common_name: $('https_gen_cn').value,
            rsa_bits: $('https_gen_rb').value,
            days_valid: $('https_gen_dv').value
        },
        dataType: "json",
        error: function(xhr) {
            clearTimeout(id_timeout_btn_gen);
            $btn.val('Failed!');
            setTimeout("reset_btn_gen(0)", 1500);
        },
        success: function(response) {
            var sys_result = (response != null && typeof response === 'object' && "sys_result" in response)
                ? response.sys_result : -1;
            clearTimeout(id_timeout_btn_gen);
            if(sys_result == 0){
                $btn.removeClass('alert-error').addClass('alert-success');
                $btn.val('Success!');
                setTimeout("reset_btn_gen(1)", 1000);
                reboot();
 
            }else{
                $btn.val('Failed!');
                setTimeout("reset_btn_gen(0)", 1500);
            }
        }
    });
}
 
function reboot(){
    showLoading(board_boot_time());
    var $j = jQuery.noConflict();
    $j.post('/apply.cgi',
    {
        'action_mode': ' Reboot ',
    });
}
Очнеь нужно, когда завершится отработка строки setTimeout("reset_btn_gen(1)", 1000);, после чего начнется перезагрузка reboot();. Можно, конечно когда завершится отработка строки setTimeout("reset_btn_gen(1)", 1000);, вручную нажимать кнопку Перезагрузка - но хочется автоматически

А на данный момент - начинает перезагрузка reboot(); + появляется ползунок showLoading(board_boot_time());, после чего отрабатывает setTimeout("reset_btn_gen(1)", 1000); - и все, ползунок showLoading(board_boot_time()); пропадает

Спасибо.
Миниатюры
Синхронное выполнение и setTimeout(), чтобы перезагрузка была после setTimeout()  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.06.2025, 10:17
Ответы с готовыми решениями:

Синхронное выполнение и setTimeout()
К примеру есть кусок кода: function wrap(){ if(self.queue.length &gt; 0){...

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

Синхронное выполнение ajax-запроса
Может кто нибудь знает как реализовать действенное выполнение подобной задачи. Нужно узнать что...

34
 Аватар для voraa
1276 / 1241 / 185
Регистрация: 21.01.2024
Сообщений: 5,727
26.06.2025, 10:28
Цитата Сообщение от SharkyEXE Посмотреть сообщение
Очнеь нужно, когда завершится отработка строки setTimeout("reset_btn_gen(1)", 1000);, после чего начнется перезагрузка reboot();
Ну так и происходит.
Отрабатывает функция setTimeout, которая задает выполнение какого то кода через секунду, и выполняется reboot();
Если вам надо, что бы reboot выполнялся после кода, который задает setTimeout, а не после самого setTimeout, так и пишите.
И вставьте тогда reboot в этот код

JavaScript
1
setTimeout(() => {reset_btn_gen(1); reboot();}, 1000);
0
2 / 2 / 0
Регистрация: 09.08.2015
Сообщений: 192
26.06.2025, 10:45  [ТС]
voraa, здравствуйте

Вы извините, любезно, я не шибко профессионал, мне в коде заменить две строки

JavaScript
1
2
setTimeout("reset_btn_gen(1)", 1000);
reboot();
на одну

JavaScript
1
setTimeout(() => {reset_btn_gen(1); reboot();}, 1000);
И у меня выполнится то, что мне нужно?

когда завершится отработка кода reset_btn_gen(1)
после чего начнется перезагрузка reboot()


(аля чтобы после завершения отработки кода reset_btn_gen(1) НЕ нажимать вручную кнопку Перезагрузка)
0
 Аватар для voraa
1276 / 1241 / 185
Регистрация: 21.01.2024
Сообщений: 5,727
26.06.2025, 11:12
Цитата Сообщение от SharkyEXE Посмотреть сообщение
когда завершится отработка кода reset_btn_gen(1)
после чего начнется перезагрузка reboot()
У вас перезагрузка страницы в reset_btn_gen находится (location.href = location.href
А что делает reboot мне не ведомо.
0
2 / 2 / 0
Регистрация: 09.08.2015
Сообщений: 192
26.06.2025, 11:32  [ТС]
voraa, здравствуйте

Да так оно и верно

когда завершится отработка кода reset_btn_gen(1)
выполняется перезагрузка страницы

после завершения перезагрузки страницы мне нужно выполнить reboot()

Я попробовал, выполнил код

JavaScript
1
2
3
4
            if(sys_result == 0){
                $btn.removeClass('alert-error').addClass('alert-success');
                $btn.val('Success!');
                setTimeout(() => {reset_btn_gen(1); reboot();}, 1000);
Все равно
начинает перезагрузка (команда reboot())
появляется ползунок-прогресс бар перезагрузки showLoading(board_boot_time());
после чего ползунок-прогресс бар перезагрузки showLoading(board_boot_time()); завершается
страница обновляется

То есть "ползунок-прогресс бар перезагрузки showLoading(board_boot_time()); завершается" ПОТОМУ что обновилась страница

А мне по нормальному нужно

сначала страница обновляется
а только потом
начинает перезагрузка (команда reboot())
появляется ползунок-прогресс бар перезагрузки showLoading(board_boot_time());
0
 Аватар для voraa
1276 / 1241 / 185
Регистрация: 21.01.2024
Сообщений: 5,727
26.06.2025, 11:40
Цитата Сообщение от SharkyEXE Посмотреть сообщение
после завершения перезагрузки страницы мне нужно выполнить reboot()
Это невозможно.
Когда происходит перезагрузка, все скрипты пропадают и загружаются заново. В этом перезагрузка ничем не отличается от просто загрузки.
0
2 / 2 / 0
Регистрация: 09.08.2015
Сообщений: 192
26.06.2025, 11:46  [ТС]
voraa, здравствуйте

Вы извините меня, пожалуйста, любезно, у меня деградация какая-то

Есть код, когда я проблему написал

Как мне сделать, чтобы после завершения отработки команды
setTimeout("reset_btn_gen(1)", 1000);
у меня тупо выполнилась команда reboot()

Всё!

Я же написал на простом русском языке

после завершения отработки команды
setTimeout("reset_btn_gen(1)", 1000);
я могу вручную нажать кнопку Перезагрузка (прилагал картинку)

Но мне хочется автоматическую перезагрузку

после завершения отработки команды
setTimeout("reset_btn_gen(1)", 1000);

Я понимаю, тут в чате можно неделю чатиться, кнопки на клавиатуре нажимать, просто задача тупейшая из разряда "сделать и забыть", но лично я сам не понимаю, как это сделать
0
 Аватар для voraa
1276 / 1241 / 185
Регистрация: 21.01.2024
Сообщений: 5,727
26.06.2025, 11:46
Тут единственное, что можно - через sessionStorage передавать информацию, что будет перезагрузка. А при новой загрузке проверять есть ли такая информация, и если есть, то делать то, что нужно при перезагрузке.
0
2 / 2 / 0
Регистрация: 09.08.2015
Сообщений: 192
26.06.2025, 11:49  [ТС]
voraa, здравствуйте

Оооо, это революция какая-то

Вы не понимаете, что

после завершения отработки команды
setTimeout("reset_btn_gen(1)", 1000);
я могу вручную нажать кнопку Перезагрузка (прилагал картинку) и меня устраивает

Неужели в 21м веке, в век автоматизации, информатики нельзя добавить одну строку, чтобы перезагрузка автоматически выполнилась?
0
 Аватар для voraa
1276 / 1241 / 185
Регистрация: 21.01.2024
Сообщений: 5,727
26.06.2025, 11:52
Цитата Сообщение от SharkyEXE Посмотреть сообщение
Как мне сделать, чтобы после завершения отработки команды
setTimeout("reset_btn_gen(1)", 1000);
у меня тупо выполнилась команда reboot()
Просто у вас терминология хромает.
есть вызов функции setTimeout("reset_btn_gen(1)", 1000);
Эта функция делает следующее - она запускает таймер на 1 сек и потом будет выполнен какой то код. Все. На этом функция завершается. и выполняется следующая. Функция завершается не после того, как выполнится этот код, а сразу, как только установит таймер. Функция завершилась, начинают выполнятся следующие... А когда сработает таймер, выполнится указанный код.
0
2 / 2 / 0
Регистрация: 09.08.2015
Сообщений: 192
26.06.2025, 11:55  [ТС]
voraa, здравствуйте

Вы мне можете немного код испарвить, чтобы у меня заработало и ура, пожалуйста?

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

Я пробовал так
JavaScript
1
2
3
    if (is_refresh)
        location.href = location.href;
        reboot();
Тоже не работает

начинает перезагрузка (команда reboot())
появляется ползунок-прогресс бар перезагрузки showLoading(board_boot_time());
после чего ползунок-прогресс бар перезагрузки showLoading(board_boot_time()); завершается
страница обновляется
0
 Аватар для voraa
1276 / 1241 / 185
Регистрация: 21.01.2024
Сообщений: 5,727
26.06.2025, 11:56
Цитата Сообщение от SharkyEXE Посмотреть сообщение
Неужели в 21м веке, в век автоматизации, информатики нельзя добавить одну строку, чтобы перезагрузка автоматически выполнилась?
После выполнения location.href = location.href; никаких старых скриптов не останется. Все будет загружено и начнет выполняться по новой. Кнопку то вы нажать можете, она же снова загрузится. Но ваша страница понятия не будет иметь, что было до этого. Она просто загрузилась и все.
0
2 / 2 / 0
Регистрация: 09.08.2015
Сообщений: 192
26.06.2025, 11:58  [ТС]
Возможно или не сделать паузу, sleep между
location.href = location.href;
и
reboot();

Типа сначала выполниться обновление страницы
location.href = location.href;
Пауза 5 секунд
Потом выполнится перезагрузка
reboot();
?

Я не буду умничать, как это работает

Но дали команду location.href = location.href; - нужно перезагрузить страницу

Дали команду пауза, sleep - нужно приостановиться

Дали команду reboot(); - нужно перезагрузить

А так какая-то ерунда - дали команду location.href = location.href; - перезагрузилась страница

А что, команды sleep и reboot(); НЕ нужно выполнять чтоли?
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3838 / 1683 / 431
Регистрация: 14.03.2022
Сообщений: 4,269
26.06.2025, 12:01
Цитата Сообщение от SharkyEXE Посмотреть сообщение
Неужели в 21м веке, в век автоматизации, информатики нельзя добавить одну строку, чтобы перезагрузка автоматически выполнилась?
Не все пожелания страждущих можно выполнить "одной строкой".
В твоем случае, после команды
Цитата Сообщение от SharkyEXE Посмотреть сообщение
JavaScript
1
location.href = location.href;
Весь скрипт заканчивает работу и начинается загрузка "нового".

От "старого" скрипта "новому" можно передать информацию:
- через сервер
- через куки
- через "стораджи" (локальные или сессионные)

Последнее уже предлагал камрад voraa
Цитата Сообщение от voraa Посмотреть сообщение
Тут единственное, что можно - через sessionStorage передавать информацию, что будет перезагрузка. А при новой загрузке проверять есть ли такая информация, и если есть, то делать то, что нужно при перезагрузке.
0
 Аватар для voraa
1276 / 1241 / 185
Регистрация: 21.01.2024
Сообщений: 5,727
26.06.2025, 12:02
Цитата Сообщение от SharkyEXE Посмотреть сообщение
Возможно или не сделать паузу, sleep между
Нет в js никакого sleep.
Цитата Сообщение от SharkyEXE Посмотреть сообщение
Типа сначала выполниться обновление страницы
location.href = location.href;
Пауза 5 секунд
Потом выполнится перезагрузка
reboot();
После обновления страницы скрипты начинают выполняться с самого начала. Как будто страницу вы загрузили первый раз, а не с того места, где было выполнено обновление.
Нет в js никаких пауз.
0
2 / 2 / 0
Регистрация: 09.08.2015
Сообщений: 192
26.06.2025, 12:07  [ТС]
krvsa, здравствуйте

Вы извините, любезно, сам я не осилю, писал неоднократно

Просто я планировал что есть в 21м веке можно после завершения строки setTimeout("reset_btn_gen(1)", 1000); не вручную нажимать кнопку Перезагрузка (см. картинку), а чтобы автоматически перезагрузилось reboot();

Можете поправить код, чтобы Ваш способ сработал sessionStorage - я не понимаю как сделать, пожалуйста?

Добавлено через 2 минуты
voraa, здравствуйте

Этот так не умно работает скрипт, что

Дали команду location.href = location.href; - перезагрузилась страница, все отлично

А что, команды sleep и reboot(); НЕ нужно выполнять чтоли?

?
0
 Аватар для voraa
1276 / 1241 / 185
Регистрация: 21.01.2024
Сообщений: 5,727
26.06.2025, 12:14
JavaScript
1
2
3
4
if (is_refresh) {
    sessionStorage.setItem('reload', 'yes');
    location.href = location.href;
}
Где то в другом месте (в начале, при загрузке страницы)
JavaScript
1
2
3
4
if (sessionStorage.getItem('reload') === 'yes') {
    sessionStorage.removeItem('reload');
    reboot();
}
Добавлено через 1 минуту
Цитата Сообщение от SharkyEXE Посмотреть сообщение
А что, команды sleep
Такая команда мне неизвестна. И js тоже ее не знает.

Добавлено через 2 минуты
Ну если reboot не сразу запускать нужно, то setTimeout (() => reboot(), 5000);
0
2 / 2 / 0
Регистрация: 09.08.2015
Сообщений: 192
26.06.2025, 12:15  [ТС]
voraa, здравствуйте

Начало кода выглядит так

Кликните здесь для просмотра всего текста
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
<!DOCTYPE html>
<html>
<head>
<title><#Web_Title#> - <#menu5_6_5#></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="-1">
 
<link rel="shortcut icon" href="https://www.cyberforum.ru/images/favicon.ico">
<link rel="icon" href="https://www.cyberforum.ru/images/favicon.png">
<link rel="stylesheet" type="text/css" href="/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="/bootstrap/css/main.css">
<link rel="stylesheet" type="text/css" href="/bootstrap/css/engage.itoggle.css">
<link rel="stylesheet" type="text/css" href="/jquery.multi-select.css">
 
<script type="text/javascript" src="/jquery.js"></script>
<script type="text/javascript" src="/jquery.multi-select.min.js"></script>
<script type="text/javascript" src="/bootstrap/js/bootstrap.min.js"></script>
<script type="text/javascript" src="/bootstrap/js/engage.itoggle.min.js"></script>
<script type="text/javascript" src="/state.js"></script>
<script type="text/javascript" src="/general.js"></script>
<script type="text/javascript" src="/itoggle.js"></script>
<script type="text/javascript" src="/popup.js"></script>
<script type="text/javascript" src="/help.js"></script>
<script>
var $j = jQuery.noConflict();
 
$j(document).ready(function() {
    init_itoggle('telnetd');
    init_itoggle('sshd_enable_gp');
    init_itoggle('lltd_enable');
 
 
 
 
 
 
 
 
 
    init_itoggle('dnscrypt_enable', change_dnscrypt_enabled);
});
 
</script>
<script>
 
<% login_state_hook(); %>
<% openssl_util_hook(); %>
<% net_iface_list(); %>


Я не упрека и претензий, куда возможно сделать тест поместить код?

JavaScript
1
2
3
4
if (sessionStorage.getItem('reload') === 'yes') {
    sessionStorage.removeItem('reload');
    reboot();
}
0
 Аватар для voraa
1276 / 1241 / 185
Регистрация: 21.01.2024
Сообщений: 5,727
26.06.2025, 12:18
Цитата Сообщение от SharkyEXE Посмотреть сообщение
Я не упрека и претензий, куда возможно сделать тест поместить код?
Я понятия не имею что и зачем делает этот reboot и все остальные функции.
Ну попробуйте после 41 строки. (после init_itoggle('dnscrypt_enable', change_dnscrypt_enabled); )
0
Заблокирован
26.06.2025, 12:21
Цитата Сообщение от SharkyEXE Посмотреть сообщение
Очнеь нужно, когда завершится отработка строки setTimeout("reset_btn_gen(1)", 1000);, после чего начнется перезагрузка reboot();.
JavaScript
1
2
setTimeout("reset_btn_gen(1)", 1000); 
setTimeout(reboot, 1500);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.06.2025, 12:21
Помогаю со студенческими работами здесь

Синхронное выполнение кода (Async/await)
Данный код возвращает результат вида: 1 3 4 2 Как мне получить такой результат используя...

Синхронное выполнение рекурсии
имеется вызов ф-ции вида: var getChilds = function (qquery, array) { ...

Синхронное выполнение HTTP-запроса
Подскажите, как правильно реализовать следующую задачу. У компонента случается 'CanDeactivate',...

SetTimeout, перезагрузка и бесконечная загрузка страницы, wyciwyg://
Привет всем! Разбираюсь с setTimeout. Приведу сразу код: var t = setTimeout(func, 3000); ...

Много синхронных действий как отследить выполнение последнего? Как их сделать друг за другом в несколько поток
Много синхронных действий как отследить выполнение последнего? Как их сделать друг за другом в...


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

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

Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru