Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
2 / 2 / 0
Регистрация: 09.08.2015
Сообщений: 191

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

26.06.2025, 10:17. Показов 1785. Ответов 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
1248 / 1152 / 178
Регистрация: 21.01.2024
Сообщений: 5,380
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
Сообщений: 191
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
1248 / 1152 / 178
Регистрация: 21.01.2024
Сообщений: 5,380
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
Сообщений: 191
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
1248 / 1152 / 178
Регистрация: 21.01.2024
Сообщений: 5,380
26.06.2025, 11:40
Цитата Сообщение от SharkyEXE Посмотреть сообщение
после завершения перезагрузки страницы мне нужно выполнить reboot()
Это невозможно.
Когда происходит перезагрузка, все скрипты пропадают и загружаются заново. В этом перезагрузка ничем не отличается от просто загрузки.
0
2 / 2 / 0
Регистрация: 09.08.2015
Сообщений: 191
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
1248 / 1152 / 178
Регистрация: 21.01.2024
Сообщений: 5,380
26.06.2025, 11:46
Тут единственное, что можно - через sessionStorage передавать информацию, что будет перезагрузка. А при новой загрузке проверять есть ли такая информация, и если есть, то делать то, что нужно при перезагрузке.
0
2 / 2 / 0
Регистрация: 09.08.2015
Сообщений: 191
26.06.2025, 11:49  [ТС]
voraa, здравствуйте

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

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

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

Неужели в 21м веке, в век автоматизации, информатики нельзя добавить одну строку, чтобы перезагрузка автоматически выполнилась?
0
 Аватар для voraa
1248 / 1152 / 178
Регистрация: 21.01.2024
Сообщений: 5,380
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
Сообщений: 191
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
1248 / 1152 / 178
Регистрация: 21.01.2024
Сообщений: 5,380
26.06.2025, 11:56
Цитата Сообщение от SharkyEXE Посмотреть сообщение
Неужели в 21м веке, в век автоматизации, информатики нельзя добавить одну строку, чтобы перезагрузка автоматически выполнилась?
После выполнения location.href = location.href; никаких старых скриптов не останется. Все будет загружено и начнет выполняться по новой. Кнопку то вы нажать можете, она же снова загрузится. Но ваша страница понятия не будет иметь, что было до этого. Она просто загрузилась и все.
0
2 / 2 / 0
Регистрация: 09.08.2015
Сообщений: 191
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
3823 / 1661 / 428
Регистрация: 14.03.2022
Сообщений: 4,168
26.06.2025, 12:01
Цитата Сообщение от SharkyEXE Посмотреть сообщение
Неужели в 21м веке, в век автоматизации, информатики нельзя добавить одну строку, чтобы перезагрузка автоматически выполнилась?
Не все пожелания страждущих можно выполнить "одной строкой".
В твоем случае, после команды
Цитата Сообщение от SharkyEXE Посмотреть сообщение
JavaScript
1
location.href = location.href;
Весь скрипт заканчивает работу и начинается загрузка "нового".

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

Последнее уже предлагал камрад voraa
Цитата Сообщение от voraa Посмотреть сообщение
Тут единственное, что можно - через sessionStorage передавать информацию, что будет перезагрузка. А при новой загрузке проверять есть ли такая информация, и если есть, то делать то, что нужно при перезагрузке.
0
 Аватар для voraa
1248 / 1152 / 178
Регистрация: 21.01.2024
Сообщений: 5,380
26.06.2025, 12:02
Цитата Сообщение от SharkyEXE Посмотреть сообщение
Возможно или не сделать паузу, sleep между
Нет в js никакого sleep.
Цитата Сообщение от SharkyEXE Посмотреть сообщение
Типа сначала выполниться обновление страницы
location.href = location.href;
Пауза 5 секунд
Потом выполнится перезагрузка
reboot();
После обновления страницы скрипты начинают выполняться с самого начала. Как будто страницу вы загрузили первый раз, а не с того места, где было выполнено обновление.
Нет в js никаких пауз.
0
2 / 2 / 0
Регистрация: 09.08.2015
Сообщений: 191
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
1248 / 1152 / 178
Регистрация: 21.01.2024
Сообщений: 5,380
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
Сообщений: 191
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
1248 / 1152 / 178
Регистрация: 21.01.2024
Сообщений: 5,380
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
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru