Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет mumuntu ([info]mumuntu)
@ 2010-08-05 23:00:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Я, когда пишу такое,
for( j = 0 ; j < L ; j++ ){
    var callback = function(m) {
        return function(data) {
            $tab = $(f(m, data));
            ...
        }
    } (x[j]);
    y(x[j].k, callback);
}

с одной стороны, понимаю, что это офигенно красиво, но процентов 60-70 людей в команде этот код просто не поймут, я этот прием сам обнаружил в сети, как некий паттерн.
С другой стороны, никаких других вариантов сделать асинхронную обработку сгруппированных запросов к серверу у меня сейчас нет. Как я понимаю, асинхронная обработка - сама по себе довольно сложная для понимания вещь.
Какой-то комментарий к этому коду я написал и дал ссылку на место, где этот шаблон объясняется.
Но все равно думаю, не слишком ли много зеленого чая я пью? это фундаментальная сложность, или можно как-то проще изложить?


(Читать комментарии) - (Добавить комментарий)


[info]lionet@lj
2010-08-06 01:20 (ссылка)
Конечно!

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]yakov_sirotkin@lj
2010-08-06 01:23 (ссылка)
Это я не разрешения спрашиваю, а прошу помочь идиоту разобраться:)

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]lionet@lj
2010-08-06 01:38 (ссылка)
Проблема с длинными мнемоничными идентификаторами состоит в том, что они затмевают смысл алгоритма. Но попробую:

var generate_callback_function = function(currentElement) { return function(data) { ...data + currentElement... } }
for(var currentElementIndex = 0; currentElementIndex < elementsArray.length; currentElementIndex++) {
var currentElement = elementsArray[currentElementIndex];
other_function_which_needs_a_callback(currentElement.arbitrary_key, generate_callback_function(currentElement));
}


Италиком помечены внешние к рассматриваемому алгоритму сущности.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]yakov_sirotkin@lj
2010-08-06 02:43 (ссылка)
Спасибо, так понятно!

(Ответить) (Уровень выше)


[info]fantaseour@lj
2010-08-06 02:34 (ссылка)
чтобы разобраться, есть смысл сходить по приведенной выше ссылке:
http://javascript.ru/basic/closure

(Ответить) (Уровень выше)


(Читать комментарии) -