Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Подскажите почему скрипт выполняется до завершения цикла (https://javascript.ru/forum/jquery/54474-podskazhite-pochemu-skript-vypolnyaetsya-do-zaversheniya-cikla.html)

Jigan2 18.03.2015 21:08

Подскажите почему скрипт выполняется до завершения цикла
 
Здравствуйте! Есть такой код:

var block_scroll_recent = true;
	function chache_recent(){
		var obj_user = $("#user_list");
		for (var u_id in recent_list){
			if(obj_user.find("li[select_u_id='"+u_id+"']").size()==0) {
			   var class_html = 'offline';
			   if ( recent_list[u_id]['online'] > 0 ) class_html = 'online';
			   obj_user.prepend('<li class="user" select_u_id="'+u_id+'" onclick="show_message('+u_id+');"><i class="'+class_html+'"></i><span class="user-avatar avatar-'+recent_list[u_id]['online']+'" title="'+recent_list[u_id]['u_name']+'"><img alt="'+recent_list[u_id]['u_name']+'" src="'+recent_list[u_id]['avatar']+'"></span><span class="user-name" title="'+recent_list[u_id]['u_name']+'">'+recent_list[u_id]['u_name']+'<em></em></span><em unread_id="'+u_id+'" class=""></em><a class="ac-ico"></a></li>');
			   obj_user.sortable({ items: 'li' });
			   obj.find("li[select_u_id='"+u_id+"'] .ac-ico").bind("click", function() { close_dialog(u_id);return false; });
		    }
		}
		$(".scroll_bar").customScrollbar({
			wheelSpeed: 64,
            updateOnWindowResize: true,
			animationSpeed: 0,
			onCustomScroll:function (event, scrollData) {				
            if(scrollData.scrollPercent >= 70 && obj.find('div[class="noo_dialog"]').size()==0 && block_scroll_recent == true){
				block_scroll_recent = false;
				obj_user.append('<div class="user_list_loading"><span class="user_loading"></span></div>');
				$(".scroll_bar").customScrollbar("resize", true);
                setTimeout(function() {
				    ajax_recent_list();
				},1000);
			}
            }
		});
	}


Подскажите почему цикл for еще не завершился а функция $(".scroll_bar").customScrollbar({ уже выполняется? Как сделать что бы функция выполнялась после завершения цикла?

danik.js 18.03.2015 21:13

Цитата:

Сообщение от Jigan2
Подскажите почему цикл for еще не завершился а функция $(".scroll_bar").customScrollbar({ уже выполняется?

Такого не может быть. Ты чета перепутал.

Jigan2 18.03.2015 21:54

Ну да перепутал, сейчас проверил. Надо было сразу проверить. Прошу прощения. А подскажите пожалуйста, вот есть например 2 функции
функция 1
функция 2

Мы вызываем их в другой функции

функция 3 {
функция 1
функция 2
}

Может ли функция 2 выполниться до завершения функции 1 (например в функции 1 происходит длинный цикл)? Заранее благодарен!

danik.js 18.03.2015 23:40

Для этого код должен исполняться в два потока. А джаваскрипт однопоточен.

Jigan2 19.03.2015 00:08

Т.е. если код будет таким как я написал, то функция 2 выполнится только после завершения второй, я правильно понял?


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