| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > Постоянно работающая функция |
| Автор: GIK 5.10.2005, 14:36 | ||||
| Привет всем. Я ранее задавал этот вопрос, но чесно говоря не все понял. Вот мой скрипт:
А это скрипт Sarbara
Подскажите кто нибуть что здесь есть что? |
| Автор: GIK 5.10.2005, 15:19 | ||
Попыталься еще так (сдесь куча ошибок, но логика должна быть ясна)
|
| Автор: Sardar 5.10.2005, 18:31 |
| GIK, когда пишешь, ты код запускашь? Ну ладно ошибки логики, но ошибки синтаксиса ведь сразу выдаються интерпретатором. И где вопрос или ты хочешь, что бы тебе помогли превратить "это" в нечто работающее? |
| Автор: Aliance 5.10.2005, 18:45 | ||
| GIK Ну нет слов... Когда ты научишься пользоваться форумной подсветкой! Последующие посты с неправильным использованием кнопки код буду скрывать!
И ты бы хоть ник писал правильно... |
| Автор: GIK 6.10.2005, 11:10 | ||
Я бы хотел разобратся разобратся в этом скрипте:
Мне не понятны некоторые детали этого кода, я был бы благодарен если бы мне по порядку разъяснили что сдесь есть что. а мой скрипт пожалуй не надо переделывать (нехочу занимать вашего времени на ерунду), сам разберусь если разъясните скрипт который привел Sardar P.S. Извиняюсь за неправильный ник. |
| Автор: Aliance 6.10.2005, 16:10 |
| Это новый вопрос? Новый! Тогда и постите его в новых топик, согласно правилам форума. Задавайте вопрос четче, как это все пояснить... Пишите что не понятно - поясним, а вообще - читай мануалы, сам себе пояснишь 90% кода, а уж потом только беги на форум |
| Автор: Sardar 6.10.2005, 23:05 |
| GIK что конкретно не ясно. Ответ "всё" меня не устраивает, тогда отправлю читать мануал по JS. Кратко, нужен цикл, который постоянно бы чего нибуь делал. Это возможно двумя путями:
JS существовал ещё во времена Win3.1 без многозадачности, поэтому он от природы не многозадачен. Почему разработчики сегодняшних интерпретаторов не сделают треды, не пойму, ведь язык не накладывает ограничений, а только способствует этому. Второй (третий, N'ый) процесс можно запустить с помощью хака Второй способ на таймерах это естественное решение от нетскейповцев - "кооперативная многозадачность". Кооперативная, в смысле "другой тред" не будет исполняться, пока текущий не отдаст ему управление. В JS это поставка функции на setInterval, что запустит таймер, который с заданной частотой будет вызывать функцию. Внимание: все запущенные таймеры работают в одной задаче, это значит если какая то функция чем то очень плотно занята, остальные таймеры не работают и даже не считают время И так в моём примере мы ставим функцию на таймер, она при каждом вызове быстро отрабатывает , затем выход из функции, тогда следующий таймер может продолжить работу. Немного криво? Я бы тоже так сказал, но увы пока кто нибудь с ясным умом не спроектирует стандартную библиотеку, куда войдут такие необходимые обьекты как Dictionary, Thread и прочее, так и будем париться. ECMAScript усугубил ситуацию, поставив в стандарт огрехи нетскейповцев, например кривое поведение split функции или убогий интерфейс Array. |
| Автор: GIK 7.10.2005, 14:27 | ||||||
Sardar у тебя сдесь вызов функции
, которая в свою очередь вызывает другую функцию (reken), где происходит проверка на числа, и в которой при каждом повторении переменной "a" сначало присваивается первоночальное значение, а далле присваивается значение (a+b) (при случае что все поля - числа). но мне кажется что есть сдесь глюк связанный с переменной step. Расуждаю: Если переменная step получает изначально =1, а если он равен -1 (step<0), то происходит вычет, только как он произойдет если при достимжении максимума который мне совсем непонятен какой, произойдет вызов функции
step опять таки примет значение =1 Я хотел бы вместе с тобо (если можно на ты и если можно вообще) разобраться в приведенном мною сценарии. Сдесь я установил максимум и минимум, создал второй интервал при котором уменьшается значение. Единственно не знаю как реализовать прекращение вычетов (может остановкой, или поставить под условие когда переменная дойдет до минимума)
|
| Автор: Sardar 8.10.2005, 01:48 |
| Правильно нашёл баг step должно быть инициализированно 1 вне определения функции для setInterval, иначе будет зависание как только дойдём до максимума. В остальном... если честно, надоедает вычищать твой код. Я буду помогать если ты научишся писать JS код, а не мешанину выдающую кучу синтаксических ошибок. Просто запускай в браузере перед тем как сюда запостить. Ошибки логики исправим, ошибки синтаксиса - это уже неуважение к участникам форума. |
| Автор: GIK 8.10.2005, 09:25 | ||
|
| Автор: Aliance 8.10.2005, 10:19 | ||
Да и не только синтаксиса... |
| Автор: GIK 9.10.2005, 09:54 | ||
| Sardar все, решил я свою проблему, все оказалось просто Зацени
|
| Автор: Sardar 9.10.2005, 12:24 |
| Есть один маленький недочёт, жми несколько раз на кнопку, попробуй сам обьяснить это |
| Автор: GIK 9.10.2005, 12:39 |
| Функция вызывается еще раз, тем самым увеличивается скорость вычисления. Это конечно не входило в мои планы, но мне это и немешает, хотя можно было добавить к сценарию остановку вычисления. А так этот скрипт я обдумал накануне вечером, а написал с первого раза за минут 5-7. |
| Автор: Sardar 9.10.2005, 13:16 | ||
Поведение как буд-то с каждым нажатием новый тред запускаеться, по логике так оно в терминах JS и происходит) Но если тебе не мешает... |
| Автор: GIK 10.10.2005, 11:13 | ||
| Попытался как то создать условие при котором если ввести максимум меншье минимума, выводится сообщение-предупреждение.. Разбирал, разбирал и дошел до слоедующеего: создал не обротимый глюк Кому интересно, пожалуста. Если набрать в полях (по порядку) 12, 12, 12, 1 нежать два раза... а дальше пожалуста не обижайтесь
Вот вам и магия цифр, так наверно и создают различного рода вирусы. |