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

123
[Удален]
#11

kruto, во-первых, JS выполняется последовательно! пока не закончится выполнение одной операции, следующая не будет выполняться!

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

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

burunduk, попробуйте запустить Ваш пример. Если бы ф-ции выплнялись последовательно, то в окошке бы с интервалом в 4с изменялись цифры от 1 до 7, а на самом деле выполняются все ф-ции одновременно и сразу устанавливается цифра 7.

Здесь могла быть моя подпись.
P
На сайте с 08.03.2007
Offline
250
#13

kruto, Вы пишете чепуху. Выполняются функции последовательно, это аксиома. Параллельно - только при использовании AJAX и только в некоторых браузерах. Перепишите свой пример:

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);}
kruto
На сайте с 26.10.2007
Offline
12
#14

Pilat, почему тогда в этом примере /ru/forum/comment/2973979 следующая функция не дожидается выполнения предыдущей?

[Удален]
#15

kruto, добавте в код value+ как Вам предложил Pilat,

и увидите что все делается последовательно

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

Да тут понятно, что будет нормально, но только потаму, что следующая функция использует значения установленные предыдущей функцией. Если эти значения уже заданы, то слеующая функция не дожидается окончания выполнения предыдущей. Или я не прав?

kruto добавил 02.03.2008 в 21:22

вот что у меня на самом деле:

function set_shablon_gotovinomer(){

document.getElementById('css').href = shablon_name;

setTimeout("document.getElementById('organization').innerHTML=Object['text_organization'];",2000);

document.getElementById("logo").style.display="";

}

функция выполняет замену файла "css", записывает текст в "organization" и изменяет атрибут для "logo".

Так вот если я убираю таймаут, то при вызове этой ф-ции IE часто зависает, я так полагаю из-за того, что не успел окончательно замениться файл. Однако на более медленном интернете и таким таймаутом виснет. А на локально испоользовании вообще не висет даже без таймаута.

Так вот как мне перейти к выполнению 2-й и 3-й строчки функции только после завершения выполнения первой.

[Удален]
#17

kruto,

kruto:
функция выполняет замену файла "css"

document.getElementById('css').href = shablon_name; - обращается не к файлу css, а к элементу с ID="css"

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

ну этот Id у меня на <link id="css" href="shablon_101.css" rel="stylesheet" type="text/css" />

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

Так вот если следующее действие выполняется до окончательой загрузки всего этого, то IE виснет. Вариант с таймаутом мне не нравится тем, что на медленном интернете все равно ожет не успеть все загрузиться, а на быстром лишние задержки

тем не менее всем спасибо, кто отозвался

[Удален]
#19

kruto, попробуйте обрабатывать события ,

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

P
На сайте с 08.03.2007
Offline
250
#20
kruto:
Pilat, почему тогда в этом примере /ru/forum/comment/2973979 следующая функция не дожидается выполнения предыдущей?

Я понял, кажется, что Вам на самом деле нужно.

Не связывайтесь с заменой CSS - столько возни будет, потом с загрузкой бакграундов... Это не к JavaScript'у отношение имеет, скорее к рендеру конкретного браузера.

Pilat добавил 03.03.2008 в 02:09

kruto:
setTimeout("document.getElementById('organization').innerHTML=Object['text_organization'];",2000);

А что это за Object ?

123

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