Замыкания... почему alert "глючит" ? 
		
		
		
		Есть 2 фрагмента, каждый из которых через 3 секунды выводит i (от 1 до 10). Но вот почему-то во втором (с alert) порядок нарушен.  console.log выводит всё правильно (от 1 до 10.) Почему? 
	1. 
for (var i = 1; i <= 10; i++) {
		(function(e) {
			setTimeout(function() {
				console.log(e);
			}, 3000);
		})(i);
	}
2. 
for (var i = 1; i <= 10; i++) {
		(function(e) {
			setTimeout(function() {
				alert(e);
			}, 3000);
		})(i);
	}
 | 
	
		
 Keramet, 
	потому что у вас долгая реакция на кнопку ок, а у Google Chrome мания всё оптимизировать, так как он считает нужным.  | 
	
		
 рони, т.е. на других броузерах alert выдаст всё по порядку? 
	 | 
	
		
 Keramet, 
	да  | 
	
		
 Keramet, 
	уберите for и всё будет по порядку везде и без замыканий :)  | 
	
		
 Цитата: 
	
  | 
	
		
 Keramet, 
	одна функция с условием запуска без циклов  | 
	
		
 Keramet, 
	
var i = 0;
		(function fn() {
		  i  &&  alert(i);
          i++;
		  i < 11 &&	setTimeout(fn, 3000);
		})();
 | 
	
		
 Цитата: 
	
 . Почему нельзя просто alert(i); ? (чтобы ноль не выводить?)  | 
	
		
 Keramet, 
	чтобы первый алерт был не сразу а через 3 секунды  | 
	
		
 Цитата: 
	
  | 
	
		
 Цитата: 
	
  | 
	
		
 Цитата: 
	
  | 
	
		
 Асинхронное - я так понимаю, основанное на событиях, где нет четкого распорядка выполнения команд. но в нашем примере (10раз подряд вывести что-то, ключевое как раз и есть - подряд, по порядку). Было б логично и получить результат в нужном порядке ) 
	 | 
	
		
 Keramet, 
	таймаут -- это тоже событие. Ваши коллбеки выстреливают по этому событию. Просто в js дохрена подковерной возни и противоречивый синтаксис.  | 
	
		
 Keramet, 
	Чтобы проще было это понять, представьте себе, что у нас есть объект таймаут 
Timeout.setTimeout(callback)
//В объект таймаут записывется некий слот, скажем, onTimeout = callback
// а где то на уровне реализации по событию таймаута движок вызывает этот коллбек
onNextTick = function(){Timeout.onTimeout()}
Вот так все реально и происходит, просто многое скрыто от ваших глаз, и это приводит к непоняткам.  | 
	
		
 в примере с выводом 10, можно считать вывод числа 2 функцией обратного вызова (ФОВ) к выводу числа 1; вывод 3 - ФОВ от вывода 2 и т.д.? 
	 | 
	
		
 Цитата: 
	
  | 
	
		
 Keramet, 
	Вы как бы говорите движку: Когда событие наступит вызови вот эти коллбеки.  | 
	
		
 Возможно я не совсем корректно выразился:  
	что такое функция обратного вызова - это функция, которой передаётся управление только после того, как полностью закончит свою работу вызвавшая её функция. правильно? Я поэтому и спросил, можно ли считать (хотя бы образно), что вывод числа 2 (будем образно считать вывод числа 2 функцией обратного вызова) должен произойти только после того, как произойдет вывод числа 1 (а вывод числа 1 - это функция, по окончанию работы которой вызывается наша ФОВ). Вух - ни и заплёл я - надеюсь, смысл понятен ;)  | 
	
		
 Цитата: 
	
  | 
	
		
 Keramet, 
	для хрома приоритет время -- время таймера подошло он пытается его сначала выполнить, затем смотрит очередь , если нельзя выполнить ставит в очередь, в других браузерах сразу кидают в очередь, потом пытаются выполнить.  | 
	
		
 Цитата: 
	
  | 
	
		
 Цитата: 
	
  | 
	
		
 Цитата: 
	
 П.С. мне нравится ваше Скорее всего ;)  | 
	
		
 Keramet, 
	Я не писал реализацию V8, извините. Но Вам это и не нужно знать. Просто имейте в виду, что порядок не гарантируется, этого достаточно.  | 
	
		
 callbackhell, 
	Это я уже понял, что порядок не гарантируется :) в этом то и состоял вопрос - почему!! или я что-то накодил..., или глюк какой-то. Вариант Рони работает, но он мне как-то эстетически не нравиться - это моё субъективное мнение ;)  | 
	
		
 Keramet, 
	так не используйте алерт и ваш вариант тоже сработает как надо если уложатся в 3 секунды все заботы браузера.  | 
	
		
 Цитата: 
	
  | 
	
		
 Цитата: 
	
  | 
| Часовой пояс GMT +3, время: 06:45. |