Последовательное выполнение функций в Javascript

12 3
kruto
На сайте с 26.10.2007
Offline
12
17451

Есть ли возможность выполнить в Javascript функци последовательно одна за другой? То есть, если к меня написано

func1();

func2();

func3();

func4();

то функции выполняются одновременно все не дожидаясь выполнения предыдущей.

Вариант с таймаутом не подходит.

Как выполнить func1(), после ее выполнения - func2() и т.д.

Здесь могла быть моя подпись.
dkameleon
На сайте с 09.12.2005
Offline
386
#1
kruto:

то функции выполняются одновременно все не дожидаясь выполнения предыдущей.

чесно говоря, для меня это сюрприз :)

может просто сами действия внутри функций не выполняются моментально?

Дизайн интерьера (http://balabukha.com/)
[Удален]
#2

kruto, вложите одну функцию в другую в нужной последовательности

DyaDya
На сайте с 11.04.2007
Offline
147
#3

1. Точно нюансов не помню, а они разве и так не будут последовательно выполняться?

2. Если они будут одновременно выполняться, то можно сделать по разному... Например,

- вызываем одну функцию, затем в конце вызываем слудующую и т.д.

- можно создать массив с названиями функций и в цикле по порядку их все вызвать как вариантн через eval('func1();').

ну еще можно что-нибудь придумать

Выбирайте качественный хостинг (http://vashmaster.ru/informaciya/o_poleznyh_programmah/news83.php) и продвигайте сайты в СЕОПУЛЬТ (http://seopult.ru/ref.php?ref=72b5ed9561fe66a1). А на «SAPE» я в обиде :) Не упрекайте за очепятки, пишу вслепую (http://ergosolo.ru/) и также делаю сайты (http://www.vashmaster.ru/) ;)
kruto
На сайте с 26.10.2007
Offline
12
#4
DyaDya:
1. Точно нюансов не помню, а они разве и так не будут последовательно выполняться?

Я новичек в JS, но судя по тому, что у меня получается функции выполняются именно параллельно, причем по этой причине зависает IE, когда выполняемых функций порядка 60.

вот пример


<html>
<head>
</head>

<body>
<form name="form1" method="post" action="">
<input type="text" name="text1">
</form>
<script language="javascript">
function func1(){setTimeout("document.form1.text1.value='1'",4000);}
function func2(){setTimeout("document.form1.text1.value='2'",4000);}
function func3(){setTimeout("document.form1.text1.value='3'",4000);}
function func4(){setTimeout("document.form1.text1.value='4'",4000);}
function func5(){setTimeout("document.form1.text1.value='5'",4000);}
function func6(){setTimeout("document.form1.text1.value='6'",4000);}
function func7(){setTimeout("document.form1.text1.value='7'",4000);}
func1();
func2();
func3();
func4();
func5();
func6();
func7();
</script>
</body>
</html>

Внимание! сдесь Таймаут я применил лишь для того, чтобы показать что функции выполняются параллельно и я знаю, что сдесь можно просто каждый таймаут увеличить на 4000 относительно предыдущего, НО в реальности у меня не таймауты, а вызовы еще кучи подфункций и мне надо вызов следующей функции только после выполнения предыдущей со всеми ее подфункциями.

Реально такое сделать?

[Удален]
#5
kruto:
мне надо вызов следующей функции только после выполнения предыдущей со всеми ее подфункциями.

ну так и вызывайте следующию в конце предыдущий

kruto
На сайте с 26.10.2007
Offline
12
#6
burunduk:
ну так и вызывайте следующию в конце предыдущий

И что это изменит?

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

[Удален]
#7

kruto, я что-то не понял а почему у Вас выполняется функция если Вы ее не вызываете? 😮

<script language="javascript">
function func1(){setTimeout("document.form1.text1.value='1'",4000);}
function func2(){setTimeout("document.form1.text1.value='2'",4000);}
function func3(){setTimeout("document.form1.text1.value='3'",4000);}
function func4(){setTimeout("document.form1.text1.value='4'",4000);}
function func5(){setTimeout("document.form1.text1.value='5'",4000);}
function func6(){setTimeout("document.form1.text1.value='6'",4000);}
function func7(){setTimeout("document.form1.text1.value='7'",4000);}
function func8() {func1();
func2();
func3();
func4();
func5();
func6();
func7();
}
func8();
</script>
grey109
На сайте с 15.06.2005
Offline
160
#8

Сколько приходилось писать/иметь дело с javascript-ами - проблем параллельного выполнения кода не возникало, да и по логике такое не возможно.

Пример рабочий есть?

[Удален]
#9

grey109, вот и я про то же

kruto
На сайте с 26.10.2007
Offline
12
#10

burunduk, дело в том что JS проходит почти мгновенно прохдит по всем вызовам функций, и начинает их выполнять, вот и получается, что если функция долго выполняется, то одновремнно много функций идет.

grey109, сек. в личку скину пример.

12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий