Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   fadeIn срабатывает раньше чем нужно. (https://javascript.ru/forum/jquery/31509-fadein-srabatyvaet-ranshe-chem-nuzhno.html)

mitiya 10.09.2012 23:23

fadeIn срабатывает раньше чем нужно.
 
есть вот такой код

var fadeSpeed = 200;

$("#div").stop().fadeOut(fadeSpeed, function() {
		$("#div").html('тут вызывается некая функция которая создает текст');
		$("#div").fadeIn(fadeSpeed);
	});


этот код должен плавно гасить див с текстом, потом менять его и плавно снова показывать.
Но поскольку получение текста занимает некоторое время, $("#div").fadeIn(fadeSpeed); уже отрабатывает и новый текст появляется резко.

я уже и $("#div").fadeIn(fadeSpeed) пихал в ту функцию , все равно не получается заставить его начать работать уже после того как текст сменится.

shaltay 11.09.2012 16:52

а setTimeout не решит проблему?

mitiya 11.09.2012 17:18

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

mitiya 11.09.2012 20:30

сам себе отвечу.
приходится делать через $.Deferred()

var fadeSpeed = 200;
var d = $.Deferred();

$("#div").stop().fadeOut(fadeSpeed, function() {
		$("#div").html('тут вызывается некая функция которая создает текст');
	});
d.done(function() {$("#div").fadeIn(fadeSpeed)});


хотя иногда все равно создается впечатление что рановато срабатывает, но судя по всему это кажется.

shaltay 11.09.2012 20:33

а текст аяксом получаете?

mitiya 12.09.2012 02:47

нет, там просто манипуляции с ним идут кой какие.


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