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

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

26.06.2025, 10:17. Показов 1972. Ответов 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
2 / 2 / 0
Регистрация: 09.08.2015
Сообщений: 192
26.06.2025, 12:22  [ТС]
Студворк — интернет-сервис помощи студентам
voraa, здравствуйте

1) Сделаю такой тест

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    init_itoggle('privoxy_enable', change_privoxy_enabled);
    init_itoggle('dnscrypt_enable', change_dnscrypt_enabled);
if (sessionStorage.getItem('reload') === 'yes') {
    sessionStorage.removeItem('reload');
    reboot();
}
});
 
</script>
<script>
 
<% login_state_hook(); %>
<% openssl_util_hook(); %>
<% net_iface_list(); %>
2) Ну если reboot не сразу запускать нужно, то setTimeout (() => reboot(), 5000);

Это имеется ввиду, когда произойдет перезагрузка страницы location.href = location.href;, страница загрузиться, пройдет 5ть секунд и сделается команда перезагрузить или не так это работает?

if (sessionStorage.getItem('reload') === 'yes') {
sessionStorage.removeItem('reload');
reboot();
setTimeout (() => reboot(), 5000);
}
0
2 / 2 / 0
Регистрация: 09.08.2015
Сообщений: 192
26.06.2025, 12:28  [ТС]
3) Что делает команда reboot() - см видео.
На видео я нажал кнопку Перезагрузка.
Команда reboot() - это то, что выполняет кнопка Перезагрузка

JavaScript
1
2
3
4
5
6
7
8
function reboot(){
    showLoading(board_boot_time());
    var $j = jQuery.noConflict();
    $j.post('/apply.cgi',
    {
        'action_mode': ' Reboot ',
    });
}
Вложения
Тип файла: mp4 Запись_2025_06_26_12_23_30_365.mp4 (778.9 Кб, 0 просмотров)
0
 Аватар для voraa
1301 / 1300 / 192
Регистрация: 21.01.2024
Сообщений: 6,022
26.06.2025, 12:32
black1385,
Очень хочется тебя послать в бан. Жаль прав таких нет.
Ты код reset_btn_gen посмотрел? Ты понял, что он делает? А если нет, то хрена ты тут со своими идиотскими советами лезешь?

Добавлено через 2 минуты
Цитата Сообщение от SharkyEXE Посмотреть сообщение
3) Что делает команда reboot() - см видео.
На видео я нажал кнопку Перезагрузка.
Команда reboot() - это то, что выполняет кнопка Перезагрузка
Я из видео пойму, к чему и зачем выполняется запрос $j.post('/apply.cgi'?

Добавлено через 39 секунд
Цитата Сообщение от SharkyEXE Посмотреть сообщение
страница загрузиться, пройдет 5ть секунд и сделается команда перезагрузить или не так это работает?
Да.
0
2 / 2 / 0
Регистрация: 09.08.2015
Сообщений: 192
26.06.2025, 12:35  [ТС]
Цитата Сообщение от voraa Посмотреть сообщение
Я из видео пойму, к чему и зачем выполняется запрос $j.post('/apply.cgi'?
Нет

Я просто про то, что кнопка маленькая Перезагрузка (в правом верхнем углу), что я нажал на видео - эта маленькая Перезагрузка (в правом верхнем углу) выполняет код

JavaScript
1
2
3
4
5
6
7
8
function reboot(){
    showLoading(board_boot_time());
    var $j = jQuery.noConflict();
    $j.post('/apply.cgi',
    {
        'action_mode': ' Reboot ',
    });
}
Табличку убрал из кода
JavaScript
1
2
    if(!confirm('<#Main_content_Login_Item7#>'))
        return;
А так, полностью выглядит

function reboot(){
if(!confirm('<#Main_content_Login_Item7# >'))
return;
showLoading(board_boot_time());
var $j = jQuery.noConflict();
$j.post('/apply.cgi',
{
'action_mode': ' Reboot ',
});
}
0
Заблокирован
26.06.2025, 12:37
Цитата Сообщение от voraa Посмотреть сообщение
Ты понял, что он делает?
Перезагружает? И он хочет, что бы после перезагрузки еще что-то на странице сработало? Мда.. Ну ок. А reboot() отправляет на сервер данные о перезагрузке? Если так, тогда можно вначале отправить на сервер, а потом уже перезагружать.
Цитата Сообщение от voraa Посмотреть сообщение
Очень хочется тебя послать в бан.
Ты за словами то следи. А то сам в бан полетишь.
0
 Аватар для voraa
1301 / 1300 / 192
Регистрация: 21.01.2024
Сообщений: 6,022
26.06.2025, 12:41
Цитата Сообщение от black1385 Посмотреть сообщение
Перезагружает?
Как неожиданно да?
А посмотреть самому, прежде, чем идиотские советы давать - чукча не читатель, а писатель?

Добавлено через 1 минуту
Цитата Сообщение от black1385 Посмотреть сообщение
И он хочет, что бы после перезагрузки еще что-то на странице сработало?
Ты видно этого тоже хочешь, раз такие советы даешь.
0
Заблокирован
26.06.2025, 12:45
Цитата Сообщение от voraa Посмотреть сообщение
А посмотреть самому, прежде, чем идиотские советы давать
Счас гляну, какие ты советы давал. Счас... счас...
Цитата Сообщение от voraa Посмотреть сообщение
setTimeout(() => {reset_btn_gen(1); reboot();}, 1000);
Интересно. А как же у тебя функция reboot могла сработать после выполнения перезагрузки. Да... это не идиотский совет. Не... совсем не идиотский

Добавлено через 1 минуту
Чукча оказывается и писатель, и читатель и долбоящер однако. Других критикует, а сам тоже самое писал.
0
2 / 2 / 0
Регистрация: 09.08.2015
Сообщений: 192
26.06.2025, 13:18  [ТС]
voraa, здравствуйте

Спасибо Вам человеческое за помощь

**************************************** ****************************************

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

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();
}
Ну если reboot не сразу запускать нужно, то setTimeout (() => reboot(), 5000);
**************************************** ****************************************

По если reboot не сразу запускать нужно, то setTimeout (() => reboot(), 5000);

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

Это имеется ввиду, когда произойдет перезагрузка страницы location.href = location.href;, страница загрузиться, пройдет 5ть секунд и сделается команда перезагрузить или не так это работает?

if (sessionStorage.getItem('reload') === 'yes') {
sessionStorage.removeItem('reload');
// reboot();
setTimeout (() => reboot(), 5000);
}
Ответ: Синхронное выполнение и setTimeout(), чтобы перезагрузка была после setTimeout()

Да
**************************************** ****************************************

Кликните здесь для просмотра всего текста
<!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="images/favicon.ico">
<link rel="icon" href="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('wins_enable', change_wins_enabled);
init_itoggle('lltd_enable');
if (sessionStorage.getItem('reload') === 'yes') {
sessionStorage.removeItem('reload');
// reboot();
// если reboot не сразу запускать нужно
setTimeout (() => reboot(), 5000);
}

});

</script>
<script>

<% login_state_hook(); %>
<% openssl_util_hook(); %>
<% net_iface_list(); %>

function initial(){
show_banner(1);
show_menu(5,7,2);
show_footer();
load_body();

.................................

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)
sessionStorage.setItem('reload', 'yes');
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);
}else{
$btn.val('Failed!');
setTimeout("reset_btn_gen(0)", 1500);
}
}
});
}

function reboot(){
// if(!confirm('<#Main_content_Login_Item7# >'))
// return;
showLoading(board_boot_time());
var $j = jQuery.noConflict();
$j.post('/apply.cgi',
{
'action_mode': ' Reboot ',
});
}


Прилагаю видео, рабоатет безупречно, класс!
Вложения
Тип файла: mp4 Запись_2025_06_26_13_06_50_931.mp4 (1.41 Мб, 3 просмотров)
0
Заблокирован
26.06.2025, 15:32
Цитата Сообщение от SharkyEXE Посмотреть сообщение
Прилагаю видео, рабоатет безупречно, класс!
Это костыль. Зачем перезагружать страницу, если уже давным-давно существует технология AJAX?
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3864 / 1769 / 434
Регистрация: 14.03.2022
Сообщений: 4,460
26.06.2025, 15:35
Цитата Сообщение от SharkyEXE Посмотреть сообщение
JavaScript
1
setTimeout (() => reboot(), 5000);
Можно даже так...

JavaScript
1
setTimeout (reboot, 5000);
0
2 / 2 / 0
Регистрация: 09.08.2015
Сообщений: 192
26.06.2025, 16:13  [ТС]
black1385, здравствуйте

Если технология AJAX - 1-2-3-4-5 строк - это одно

Если переписывать 1267 строк страницы - лучше НЕ надо, я сам не смогу, да и AJAX может того не стоит

Как бы суть - нажимаю на кнопку с надписью Сгенерировать, на кнопке сначала пишется Please wait..., если успешно совершена генерация https сертификатов - на кнопке пишется Sucsessfull, после 1 секунды страница обновляется и на кнопке пишется Сгенерировать, нужна перезагрузка устройства

Мне после "когда после 1 секунды страница обновляется" нужно сделать перезагрузку - все работает, ура

Если у Вас есть способ (без перезагрузки страницы, зачеркнуто)

нажимаю на кнопку с надписью Сгенерировать
на кнопке сначала пишется Please wait..., происходит генерация сертификатов
если успешно совершена генерация https сертификатов - на кнопке пишется Sucsessfull
после 1 секунды страница обновляется
на кнопке пишется Сгенерировать
нужна перезагрузка устройства

пожалуйста, напишите.

Полный файл прилагаю
Вложения
Тип файла: rar Advanced_Services_Content_2025-06-26_16-09-20.rar (84.4 Кб, 0 просмотров)
0
Заблокирован
26.06.2025, 16:20
SharkyEXE, вот такая логика. Нажимаешь на кнопку "Сгенерировать". Отправляется запрос на сервер. Во время ожидания на кнопке пишется "Please wait..." После получения ответа с сервера и в зависимости от результата на кнопке появляется "Успешно" или "Неуспешно". Перезагрузки никакой не надо. И таймаутов тоже. Все так делают и уже давным-давно. А твой код - это голимый велосипед.

https://www.google.com/search?q=JS+ajax
0
2 / 2 / 0
Регистрация: 09.08.2015
Сообщений: 192
26.06.2025, 16:58  [ТС]
black1385, здравствуйте

Ды ссылковать и я могу, написать ссылку, плюс себе в копилочку ссылкования поставить и ура

Я не знаток, не профессионал, еще могу три раза написать, есть желание готовый код - пожалуйста, приложите

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

По поводу обновления страницы - да, можно location.href = location.href; выключить

выключить обновление страницы location.href = location.href;, но если выключить обновление страницы location.href = location.href; - то сертификаты НЕ запишутся в формочки, в общем БЕЗ обновления страницы никак НЕ обойтись

Спасибо.
0
Заблокирован
26.06.2025, 17:11
Цитата Сообщение от SharkyEXE Посмотреть сообщение
но если выключить обновление страницы location.href = location.href; - то сертификаты НЕ запишутся в формочки, в общем БЕЗ обновления страницы никак НЕ обойтись
В формочку можно записать с помощью js после успешного ответа от сервера. Это всё решаемо. Когда человек лениться, то всегда себе оправдание найдет
Хотя... если работает, то и так сойдет
0
2 / 2 / 0
Регистрация: 09.08.2015
Сообщений: 192
27.06.2025, 14:08  [ТС]
black1385, здравствуйте

Да понятно, кто хочет оползти, чахнуть, может аяксить, чего-ничего заниматься, хлопотать, пожалуйста, я еще раз напишу, можете по поиску поискать - я не великий профессионал аяксов, ява скриптов от слова соовсем, чахнуть неделями, месяцами - не ко мне, скопировать-вставить готовый код - всегда рад, а окосеть от экрана монитора - пардон, все равно выхлопа ноль, оно того НЕ стоит от слова соовсем.

По поводу "В формочку можно записать с помощью js после успешного ответа от сервера."

Там есть формы - их 4ре, когда происходит обновление страницы командой (location.href = location.href - то
- и название кнопки с Sucsessfull меняется на Сгенерировать
+
- в 4ре формочки записываются параметры

Есть желание готовый код, скопировать-вставить - я готов сделать тест, в плане я ВЫКЛючу команду location.href = location.href;, но код обязательно должен в 4ре формочки записать код

Вполне возможно, обновление страницы нужно (location.href = location.href РАДИ только записи кода в 4ре формочки и название кнопки с Sucsessfull меняется на Сгенерировать

Спасибо.
Миниатюры
Синхронное выполнение и setTimeout(), чтобы перезагрузка была после setTimeout()  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.06.2025, 14:08

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
35
Ответ Создать тему
Новые блоги и статьи
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru