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

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

26.06.2025, 10:17. Показов 1712. Ответов 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
Сообщений: 181
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
Сообщений: 181
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
1222 / 1109 / 173
Регистрация: 21.01.2024
Сообщений: 5,090
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
Сообщений: 181
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
1222 / 1109 / 173
Регистрация: 21.01.2024
Сообщений: 5,090
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
Сообщений: 181
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
3800 / 1630 / 428
Регистрация: 14.03.2022
Сообщений: 4,064
26.06.2025, 15:35
Цитата Сообщение от SharkyEXE Посмотреть сообщение
JavaScript
1
setTimeout (() => reboot(), 5000);
Можно даже так...

JavaScript
1
setTimeout (reboot, 5000);
0
2 / 2 / 0
Регистрация: 09.08.2015
Сообщений: 181
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
Сообщений: 181
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
Сообщений: 181
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
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru