Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как прекратить выполнение скрипта ? (https://javascript.ru/forum/misc/39120-kak-prekratit-vypolnenie-skripta.html)

macdack 16.06.2013 23:07

Как прекратить выполнение скрипта ?
 
при нажатии на кнопку программа запускает скрипт eval(x)
в переменной х набор инструкций бесконечного цикла с периодической проверкой состояния (чтобы JS не завис) и отображением состояния в окне

итак - в моем окне ворочается цикл и мигает
как его остановить и чтобы из памяти стереть все упоминания об этом цикле

как часть кода удалить из памяти, не прекращая работу остального ?
остановить и удалить программно, директивой из основной программы

nerv_ 17.06.2013 02:48

Цитата:

Сообщение от macdack
как его остановить

try {
    eval( 'throw {code:111}' );
} catch( e ) {
    alert( e.code );
}

http://javascript.ru/throw

Цитата:

Сообщение от macdack
и чтобы из памяти стереть все упоминания об этом цикле

задействовать сборщик мусора

macdack 17.06.2013 09:55

не понял ничо

nerv_ 17.06.2013 14:12

что-то я перемудрил на ночь глядя. Остановить цикл:
break;

macdack 17.06.2013 14:33

человек, ты пойми что программа (кусок программы который я эвалом запускаю) это не только цикл но и всё что угодно

пока что вижу решение такое - во всех обработчиках события. во всех условиях и циклах, и во всех блоках инструкций ставить проверку на выполнимость...

macdack 17.06.2013 14:49

ну например

основная программа загружает (eval) по команде пользователя дополнительные скрипты.
скриптов много и все они по разному используют одни и те же события мыши или клавы
то есть одну прогу надо выключить для того чтобы другая заработала

ну или каждый загружаемый скрипт крутит цикл бесконечный и мигает на экране обозначая свою активность и совершая какие то действия например с бд

надо включать-выключать функциональные части программы

danik.js 18.06.2013 03:35

macdack, открою страшную тайну - JavaScript - однопоточный. Мне жаль чувак..
Хотя.. может тебе вебворкеры помогут?

macdack 18.06.2013 10:32

человек, ты понимаеш разницу между управлением памятью и многопоточностью ?


?как действующие элементы программы работающей удалить из оперативной памяти - функции и переменные

tsigel 18.06.2013 10:47

если проблема в том чтобы выключать некий функционал на время работы других скриптов, то на это есть bind и unbind.

macdack 18.06.2013 10:55

Цитата:

Сообщение от tsigel (Сообщение 256936)
если проблема в том чтобы выключать некий функционал на время работы других скриптов, то на это есть bind и unbind.

ты читать чумеешь вопросы ?

я про жаваскрипт спрашиваю и не только про обработчики событий

danik.js 18.06.2013 11:25

Цитата:

Сообщение от macdack
человек, ты понимаеш разницу между управлением памятью и многопоточностью ?

Как тебе управление памятью поможет остановить выполнение кода?
Вот, допустим у объектов появится метод release() (или как он обычно называется), что позволит тебе стереть его из памяти принудительно. Дальше что?

macdack 18.06.2013 12:30

вот хорошая алегория -

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

- в такой архитектуре надо иметь возможность отключать и включать процессы



может просто запускать в iframe и просто удалять этот фрейм...

Solonik 18.06.2013 12:46

Цитата:

Сообщение от macdack (Сообщение 256927)
человек, ты понимаеш разницу между управлением памятью и многопоточностью ?


?как действующие элементы программы работающей удалить из оперативной памяти - функции и переменные


Переменные можно вроде удалять так:
var x=0;
delete x;

alert(x);

или тут может через сборщик мусора ?
Больше мне кажется вариантов нет.

dmitriymar 18.06.2013 12:51

Цитата:

Сообщение от Solonik
Переменные можно вроде удалять так:

чувак .... так свойства можно удалять
var x=10;
delete x;
alert(x);

Dim@ 18.06.2013 14:01

dmitriymar,
нельзя удалять! Все переменные объявленные через var не могут быть удалены - проверь хотя бы в песочнице свой код:)

dmitriymar 18.06.2013 14:24

Dim@,
Цитата:

Сообщение от Dim@
dmitriymar,
нельзя удалять! Все переменные объявленные через var не могут быть удалены - проверь хотя бы в песочнице свой код

эт ты мне ? :)
посмотри на сообщение выше моего , а потом опять на моё -повторять процедуру пока мой ник в твоём сообщении не станет лишним:D

Цитата:

Сообщение от Solonik
Переменные можно вроде удалять так:
var x=0;
delete x;

alert(x);

или тут может через сборщик мусора ?
Больше мне кажется вариантов нет.

Цитата:

Сообщение от dmitriymar
Сообщение от Solonik
Переменные можно вроде удалять так:
чувак .... так свойства можно удалять
1 var x=10;
2 delete x;
3 alert(x);


Dim@ 18.06.2013 15:16

dmitriymar,
упс, немного не с тем выражением (интонацией) прочёл твой пост, поэтому немного неправильно понял :) :D

danik.js 18.06.2013 15:21

Цитата:

Сообщение от macdack
допустим окно документа и скрипт его это некое подобие операционной системы

Цитата:

Сообщение от macdack
- в такой архитектуре надо иметь возможность отключать и включать процессы

Ну если бы ты броню не включал, то понял бы, что операционка твоя однопоточная, а однопоточные операционки полностью передают управление выполняемой программе. Так что если твоя программа тупо маслает while (true) {} то операционка ничего сделать не сможет.
Но ты ведь у нас броненосец, так что тебе этого не понять...

dmitriymar 18.06.2013 15:25

кста, у меня из под винды удалило в новых: фф, хроме , опере -хотя это не по феншуй
ие и сборки линуксовские ведут себя по феншую

macdack 18.06.2013 15:40

Цитата:

Сообщение от danik.js (Сообщение 257000)
Ну если бы ты броню не включал, то понял бы, что операционка твоя однопоточная, а однопоточные операционки полностью передают управление выполняемой программе. Так что если твоя программа тупо маслает while (true) {} то операционка ничего сделать не сможет.
Но ты ведь у нас броненосец, так что тебе этого не понять...

ну может быть я не на том форуме ищу вопросы .. ? без обид

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


ну а если ты забыл что процессор классический 386 однопоточен, но ОС может эмулировать многозадачность

macdack 18.06.2013 15:42

два решения я уже набросал -
1) в самой программе дополнительные проверки на включенность программы
2) каждая программа запускается в отдельном iframe

но это пока гепотезы
надо будет еще раз фленгана перечитать шоли

macdack 18.06.2013 15:51

Цитата:

Сообщение от nasqad (Сообщение 257019)
Я советую вам читать в русской редакции, возможно это поможет вам улучшить ваш письменный русский язык. :-?

чо?

macdack 18.06.2013 15:55

Цитата:

Сообщение от nasqad (Сообщение 257021)
Я советую вам читать в русской редакции, возможно это поможет вам улучшить ваш письменный русский язык. :-?

не понял

macdack 18.06.2013 16:09

Цитата:

Сообщение от nasqad (Сообщение 257026)
Простите я не туда написал, просто тренируюсь

за это тут троллям яйцы не подрезают ? ))


Часовой пояс GMT +3, время: 19:29.