.then(function(res){},function(err){}) + дополнительная переменная. 
		
		
		
		Снова прошу помощи. 
	Проблема в незнании альтернатив или не понимании метода. Суть проблемы передать внутрь then(function(res) {},finction(err){}); переменные, например мне нужно передать k внутрь then функции. Действия, которые я произвожу внутри функции в then, работают. Но если я обращаюсь к какой-либо переменной за пределами функции, которая естественно лежит за пределами области видимости, то получаю ошибки. Но как наравить дополнительные переменные, кроме res, внутрь функции я не знаю. 
for ( var k in blablabla) {
	var order = ...
	order.then(function(res) {
		console.log('k=' + k);
		console.log('res=' + res);
	}, function(err) {
	});
}
 | 
	
		
 Может быть кто-то предложит другой вариант, как поступить? 
	 | 
	
		
 
// имитация
Dzen = function() {};
Dzen.prototype.then = function(f) {
f.call(this, 'resvalue');
}
console = console || {};
console.log = alert.bind(window);
var blablabla = {a:'a', b:'b'};
for ( var k in blablabla) {
    var order = new Dzen();
    order.then(function(res) {
        console.log('k=' + k);
        console.log('res=' + res);
    }, function(err) {
    });
}
а что за then ?  | 
	
		
 Спасибо за ответ. Пока пытаюсь понять как мне это в моем случае использовать. Много непонятных мне действий bind, prototype,call и || - вне if(). Есть с чем разбираться. 
	Цитата: 
	
 Думаю лучше мне будет привести пример. почикал все лишнее, чтобы не отвлекало. 
function loadCourierHomeAddressPoints(ymaps) {
	for ( var k in courier) {
// это геокодирвание в яндекскартах. получаю координаты.
		var myGeocoder = ymaps.geocode(courier[k].address, {
			results : 1,
			boundedBy : cityBound,
			strictBounds : true
		});
// обрабатываем результаты, подготавливаем данные метки, создаем метрку.
		myGeocoder.then(function(res) {
			console.log('k=' + k);
			var courierHomeAddressPlacemarkContentLayot = ymaps.templateLayoutFactory.createClass('<div>'
					+ '<div style="color:red;background-color:rgba(255,255,255,0.7);">$[properties.courier], $[properties.name], $[properties.address]</div>'
					+ '');
			var properties = {
				courier : k,
				name : courier[k].name,
				address : courier[k].address
			};
			var options = {
				iconLayout : "default#imageWithContent",
				iconContentLayout : courierHomeAddressPlacemarkContentLayot,
				cursor : 'grab',
				hasBalloon : false,
				iconContentOffset : [ 0, -10 ], // смещение содержимого метки
				iconImageHref : '../tpl/img/points/pm' + colors[k].colorLabel + 'm.png',// метка курьера
			};
			// collectionCourierHomeAddress.add(res.geoObjects);
			coordinates = res.geoObjects.get(0).geometry.getCoordinates();// результат геокодирования - координаты
			courierHomeAddressPoint[k] = new ymaps.Placemark(coordinates, properties, options); // создаю метку
		}, function(err) {
		});
	}
}
Как видите я использую содержимое хеша courier. Но для того чтобы добраться до содержимого, мне необходимо оперировать k внутри функции. А для оптимизации еще и переменную шаблона вынести за пределы, чтобы не создавать ее всякий раз.  | 
	
		
 Цитата: 
	
 Цитата: 
	
 Можно делать "снапшоты" значений k таким образом: 
function loadCourierHomeAddressPoints(ymaps) {
    for ( var k in courier) {
// это геокодирвание в яндекскартах. получаю координаты.
        var myGeocoder = ymaps.geocode(courier[k].address, {
            results : 1,
            boundedBy : cityBound,
            strictBounds : true
        });
// обрабатываем результаты, подготавливаем данные метки, создаем метрку.
        myGeocoder.then((function(k){ return function(res) {
            console.log('k=' + k);
            var courierHomeAddressPlacemarkContentLayot = ymaps.templateLayoutFactory.createClass('<div>'
                    + '<div style="color:red;background-color:rgba(255,255,255,0.7);">$[properties.courier], $[properties.name], $[properties.address]</div>'
                    + '');
            var properties = {
                courier : k,
                name : courier[k].name,
                address : courier[k].address
            };
            var options = {
                iconLayout : "default#imageWithContent",
                iconContentLayout : courierHomeAddressPlacemarkContentLayot,
                cursor : 'grab',
                hasBalloon : false,
                iconContentOffset : [ 0, -10 ], // смещение содержимого метки
                iconImageHref : '../tpl/img/points/pm' + colors[k].colorLabel + 'm.png',// метка курьера
            };
            // collectionCourierHomeAddress.add(res.geoObjects);
            coordinates = res.geoObjects.get(0).geometry.getCoordinates();// результат геокодирования - координаты
            courierHomeAddressPoint[k] = new ymaps.Placemark(coordinates, properties, options); // создаю метку
        })(k), function(err) {
        });
    }
}
 | 
	
		
 Кстати, в таких случаях очень помогает javascript-отладчик, встроенный в браузер. 
	 | 
	
		
 Цитата: 
	
  | 
	
		
 Цитата: 
	
 Спасибо что помогли разобраться с сутью проблемы. Буду думать как эти данные вывести вообще без метода then.  | 
	
		
 Так а что по поводу моего кода? Я же предложил решение. Не работает? 
	Вкладка Sources, выбираем файл, ставим на линейке точку останова в интересующем месте. В момент паузы справа изучаем Scope Variables. Цепочку вызовов функций можно увидеть в Call Stack. При наведении на переменную появится пузырек с ее значением. Полезно иногда еще пошагово выполнять код.  | 
| Часовой пояс GMT +3, время: 06:36. |