Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/36: Рейтинг темы: голосов - 36, средняя оценка - 4.64
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562

Как сделать таймер?

09.02.2011, 13:26. Показов 7126. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как сделать таймер? Сайт не игровой и никаких преимуществ от взлома таймера никто не получит, а если кто то получит туже инфу быстрее, то пусть потом попробует её быстрее прочитать и осмыслить. Поэтому дублирующий php таймер просьба не предлагать. Да и сайт на народе, там, на сколько мне известно, php просто нет.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.02.2011, 13:26
Ответы с готовыми решениями:

Как сделать таймер обратного отсчёта по нажатию на кнопку и сделать её неактивной
Снова пишу сюда, ибо нигде больше помощи не дождёшься:( Мне тут нужно сделать такую штуку: чтобы при нажатии на кнопку сработал таймер...

Как же сделать? Таймер
Имеется таймер <script type="text/javascript"> var Timer; var TotalSeconds; function CreateTimer(TimerID, Time) { Timer =...

как сделать часы и таймер?
изучая php наткнулся на такую проблему вывести на экран значения переменных и даты не сложно но как сделать так чтобы они обновлялись...

14
 Аватар для Kdn
307 / 165 / 25
Регистрация: 07.02.2011
Сообщений: 319
09.02.2011, 15:00
Код реализован в ExtJS.

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
var TaskRunner = function(interval){
    interval = interval || 10;
    var tasks = [], 
        removeQueue = [],
        id = 0,
        running = false,
 
        stopThread = function(){
            running = false;
            clearInterval(id);
            id = 0;
        },
 
        startThread = function(){
            if(!running){
                running = true;
                id = setInterval(runTasks, interval);
            }
        },
 
        removeTask = function(t){
            removeQueue.push(t);
            if(t.onStop){
                t.onStop.apply(t.scope || t);
            }
        },
        
        runTasks = function(){
            var rqLen = removeQueue.length,
                now = new Date().getTime();                             
        
            if(rqLen > 0){
                for(var i = 0; i < rqLen; i++){
                    tasks.remove(removeQueue[i]);
                }
                removeQueue = [];
                if(tasks.length < 1){
                    stopThread();
                    return;
                }
            }           
            for(var i = 0, t, itime, rt, len = tasks.length; i < len; ++i){
                t = tasks[i];
                itime = now - t.taskRunTime;
                if(t.interval <= itime){
                    rt = t.run.apply(t.scope || t, t.args || [++t.taskRunCount]);
                    t.taskRunTime = now;
                    if(rt === false || t.taskRunCount === t.repeat){
                        removeTask(t);
                        return;
                    }
                }
                if(t.duration && t.duration <= (now - t.taskStartTime)){
                    removeTask(t);
                }
            }
        };
        
    this.start = function(task){
        tasks.push(task);
        task.taskStartTime = new Date().getTime();
        task.taskRunTime = 0;
        task.taskRunCount = 0;
        startThread();
        return task;
    };
 
    this.stop = function(task){
        removeTask(task);
        return task;
    };
 
    this.stopAll = function(){
        stopThread();
        for(var i = 0, len = tasks.length; i < len; i++){
            if(tasks[i].onStop){
                tasks[i].onStop();
            }
        }
        tasks = [];
        removeQueue = [];
    };
};
Пример использования:

JavaScript
1
2
3
4
5
6
7
8
9
var writeClock = function(){ //функция для выполнения
    //код функции
} 
var task = {
    run: writeClock,
    interval: 1000 //1 секунда
}
var runner = new TaskRunner();
runner.start(task);
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
10.02.2011, 05:26  [ТС]
То есть это потоком делается? А как остановить таймер?
0
 Аватар для Kdn
307 / 165 / 25
Регистрация: 07.02.2011
Сообщений: 319
10.02.2011, 09:50
taras atavin, Напишу как написано в документации:
Предоставляет возможность выполнять одну или несколько произвольных задач многопоточным методом.
То есть здесь. Сам runner имеет интервал обновлений, а для выполнения задач используется сравнение времени с интервалом самой задачи. Если необходимый интервал задачи достигнут, значит она выполняется, если же нет, то соответственно следующий цикл ожидания.

Остановить можно так:

JavaScript
1
2
3
4
5
runner.stop(task); //останавливется указанное задание
 
//или так
 
runner.stopAll(); //останавливаются все задания
0
Почетный модератор
 Аватар для Humanoid
11556 / 4351 / 452
Регистрация: 12.06.2008
Сообщений: 12,454
10.02.2011, 11:10
Как у вас всё сложно.
JavaScript
1
2
3
4
5
function MyTimer()
{
 // какое-то действие, которое нужно выполнять каждые 100 мс.
}
var t = setInterval(MyTimer,100); // после этого каждые 100мс будет вызываться функция MyTimer
Что бы остановить, достаточно вызвать
JavaScript
1
clearInterval(t); // t - это номер таймера, который возвращает функция setInterval
Так же можно использовать setTimeout и clearTimeout.... это всё тоже самое с той разницей, что setTimeout вызовет функцию только один раз, а setInterval будет её вызвать до тех пор, пока её не остановят.
2
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
10.02.2011, 13:53  [ТС]
Humanoid, интервал в миллисекундах?
0
БТР - мой друг
 Аватар для Hagrael
333 / 277 / 47
Регистрация: 07.01.2010
Сообщений: 1,932
10.02.2011, 14:24
taras atavin, да.
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
10.02.2011, 15:01
Цитата Сообщение от Kdn Посмотреть сообщение
Предоставляет возможность выполнять одну или несколько произвольных задач многопоточным методом.
О_о JavaScript в одном потоке выполняется. Многопоточность отсутствует, как таковая.
0
 Аватар для Kdn
307 / 165 / 25
Регистрация: 07.02.2011
Сообщений: 319
10.02.2011, 15:10
Vovan-VE, Конечно всё выполняется последовательно.Тут имеется ввиду наверное псевдо многопоточность. Один таймер, много заданий.
Вот как в оригинале написано:
Provides the ability to execute one or more arbitrary tasks in a multithreaded manner
1
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
11.02.2011, 06:41  [ТС]
Локальные подоконники тоже могут быть многопоточными даже на однопроцессорной и одноядерной машине. Исполнение на самом деле последовательное, но между потоками существует разделение времени. И что такое многопоточность? Это возможность приладе самой быть многозадачной. Так вот, для пользователя это вполне имитируется даже в MS DOSе. Может быть имеется ввиду такая же многопоточность: с точки зрения системы поток один, а с точки зрения самого скрипта несколько функций выполняются логически параллельно?
0
 Аватар для Kdn
307 / 165 / 25
Регистрация: 07.02.2011
Сообщений: 319
11.02.2011, 09:55
Многопото́чность — свойство платформы или приложения, состоящее в том, что процесс, порождённый в операционной системе, может состоять из нескольких потоков, выполняющихся «параллельно», то есть без предписанного порядка во времени. При выполнении некоторых задач такое разделение может достичь более эффективного использования ресурсов вычислительной машины.
Если рассматривать код, то таймер сравнивает текущее время с временем, когда задание выполнялось последний раз, и если интервал, указанный в задании достигнут, то задание выполняется. Но многопоточночти здесь никакой нет. Не выполняется основное условие то есть без предписанного порядка во времени. Все задания выполняются последовательно и пока не выполниться одно задание, следующее задание не может быть запущено на выполнение.
Так что многопоточности реально никакой нет и в JS быть не может (во всяком случае пока что).
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
11.02.2011, 11:57  [ТС]
Цитата Сообщение от Kdn Посмотреть сообщение
Многопото́чность — свойство платформы или приложения, состоящее в том, что процесс, порождённый в операционной системе, может состоять из нескольких потоков
Способность системы выполнять как бы параллельно несколько программ - многозадачность, а многопоточной быввает запущенная на этой системе программа, если уже её части выполняются как бы параллельно. Перевод из книги Чарлза Петзолдта
Многопоточность - возможность программы самой быть многозадачной
. Конечно, реализуется системой, но для каждого отдельного приложения. И про имитацию ты пропустил? Таймер вызывает задачи последовательно? А что мешает каждой задаче выполнить маленький шажок и вернуть управление, а потом вызывается следующая? Я таким образом имитировал потоки под DOSом. И параллельно - это не без порядочно, а одновременно. То есть каждый поток выполняется последовательно, но одновременно с точки зрения прилады с каждой его операций выполняются операции остальных потоков. На самом деле одновременности нет, а есть режим разделения времени. И ты забываешь, что скипт - нет прилада, а макрос и выполняется приладой, а не системой. Многозадачные и поддерживающие многопточность системы сами выполняются последовательно (по крайней мере, на одноядерных компах), а для прилад имитируют параллельность. Кто принципиально мешает браузеру функционировать подобным же образом? Можно, кстати, всего лишь генератором псевдослучайных чисел перемешать и фактический порядок операций разных псевдопотоков. Да и самому скрипты кто мешает имитировать для пользователя одновременное выполнение нескольких протяженных во времени неэлементарных операций?
0
 Аватар для Kdn
307 / 165 / 25
Регистрация: 07.02.2011
Сообщений: 319
11.02.2011, 12:44
taras atavin, Я не спорю что можно имитировать многопоточную работу. Эта имитация будет только внутри браузера. Браузер как получал часть процессорного времени на выполнение так и будет получать его ни больше ни меньше.
В плане теории да интересно порассуждать на эту тему. Но на практике от этого никакой пользы.
Во первых скорость выполнения никак не уменьшится, потому что поток физически для браузера один.
Во вторых сложность разработки: как определить состояние задачи на момент временного выхода для передачи управления. Добавление новых переменных, увеличение объёма используемой памяти.

taras atavin, ты чего так углубился в эту тему?
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
11.02.2011, 13:19  [ТС]
Цитата Сообщение от Kdn Посмотреть сообщение
Во первых скорость выполнения никак не уменьшится
может не увеличится?
0
 Аватар для Kdn
307 / 165 / 25
Регистрация: 07.02.2011
Сообщений: 319
11.02.2011, 15:06
taras atavin, имел ввиду время выполнения.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.02.2011, 15:06
Помогаю со студенческими работами здесь

Сделать таймер JS
Здравствуйте, помогите сделать таймер обратно отчета с действием переноса на другой сайт Есть код который отчитывает время, вот когда он...

Как остановить таймер?
В одном из методов запускаю таймер командой. a1 = setTimeout(Change, tt * 500); При нажатии на кнопку запускается функция в которой этот...

Как поставить таймер на сайт
Как поставить вот этот таймер на сайт? все делал, а он не работает. http://bitby.net/timer-for-site.html Добавлено через 31 минуту ...

Как привязать таймер к кнопке
Как реализовать привязку начала отсчета времени по нажатию на кнопку? Есть страница с кнопкой получения бонуса, после нажатия которая...

Таймер на javascript. Как изменить под себя?
День добрый. Нашел скрипт. Но я взял его с сайта рабочего и там на таймере написано 12 лет 10 месяцев 22 дней 3 мин 2 сек - то есть просто...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
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 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты 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
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru