Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   как запустить функцию после другой функции (https://javascript.ru/forum/jquery/25500-kak-zapustit-funkciyu-posle-drugojj-funkcii.html)

Rentony 07.02.2012 15:06

как запустить функцию после другой функции
 
вопрос, как запустить функцию B после исполнения функции A ?

poorking 07.02.2012 15:13

A();
B();

Кэп.

Rentony 07.02.2012 15:38

нет, функция А начинает исполнятся во время исполнения функции В, а надо что бы по завершении исполнения... в общем хочу сделать что бы пока функция В исполняется, кнопка вызова этой функции была не активна, а как закончила исполнятся, стала активна

poorking 07.02.2012 15:53

Ну, предположим, ваша функция A исполняется 3 секунды, потому что в ней цикл до 100500000, вы не сможете нажать ничего в этот момент. Пример-то приведите

// НЕ ЗАПУСКАТЬ
var i = 1e10; while (i--){}


Можете попробовать

Rentony 07.02.2012 17:31

в общем вот после этого надо запустить функцию A
k2=k;
				ml_2=new YMaps.YMapsML(ml_href+'2.php?'+zapros);
				YMaps.Events.observe(ml_2, ml_2.Events.Load, function () {
					obj2 = this.filter(function (obj2) {
						return (obj2.name)
					})
					cluster.addPlacemarks(obj2);
				})

после того как массив obj2 добавится в кластер (cluster.addPlacemarks(obj2);)

poorking 07.02.2012 17:35

А, так вот что вы имели ввиду под одновременным выполнением функции. Я так понял это асинхронные операции с колбэком. Так вызвайте A прямо после cluster.addPlacemarks(obj2);

k2=k;
ml_2=new YMaps.YMapsML(ml_href+'2.php?'+zapros);

YMaps.Events.observe(ml_2, ml_2.Events.Load, function () {
    obj2 = this.filter(function (obj2) {
        return (obj2.name);
    });
    cluster.addPlacemarks(obj2);
    A(); //ВОТ ТУТ. Кэп
});

Rentony 07.02.2012 17:54

не совсем поняли, сейчас подробнее опишу ситуацию)
весь код расписывать не буду, приведу пример, в общем пока выполняется функция B, кнопка должна быть не активна, после выполнения функции, кнопка должна быть активна, переменные r1 и r2 могут быть обе равны 1 одновременно, всегда по разному, смотря что пользователь нажмет
function B(){
$("#button").attr('disabled', true);//дизактивируем кнопку
 if (r1==1){
  cluster.addPlacemarks(obj1); //занимает n-е время
 }
 if (r2==1){
  cluster.addPlacemarks(obj2); //занимает n-е время
 }
}
function A(){
 $("#button").attr('disabled', false);
}

poorking 07.02.2012 18:01

aa, понял какая операция асинхронная. Я с этим API не работал, надо вам доки читать, мне кажется что 100% по завершению запроса поджигается какое то событие или возвращает что-то типа Deferred


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