All streams
Search
Write a publication
Pull to refresh
26
0
Верхоланцев Алексей @Verkholantsev

User

Send message

Отказываемся от коллбэков: Генераторы в ECMAScript 6

Reading time6 min
Views34K
Я постоянно слышу людей, ноющих об асинхронных коллбэках в JavaScript. Держать в голове порядок исполнения в этом языке немного трудно (это тот случай, который называют «Callback Hell» или «The Pyramid of Doom»), если до этого ты имел дело с синхронным программированием. Моим обычным ответом было «тебе придется как-то с этим обходиться». В конце концов, ожидаем ли мы, что все языки программирования будут выглядеть и ощущаться одинаково? Конечно нет.

Все поменял недавний обзор черновика ECMAScript 6, в котором описываются генераторы — возможность языка, которая целиком изменит наш способ написания и серверного, и клиентского JavaScript. С помощью генераторов мы можем превратить вложенные коллбэки в похожий на синхронный код без блокирования нашей единственной event loop.
Например, этот код:
    setTimeout(function(){
        _get("/something.ajax?greeting", function(err, greeting) {
            if (err) { console.log(err); throw err; }
            _get("/else.ajax?who&greeting="+greeting, function(err, who) {
                if (err) { console.log(err); throw err; }
                console.log(greeting+" "+who);
            });
        });
    }, 1000);

может быть написан так:
    sync(function* (resume) {
        try (e) {
            yield setTimeout(resume, 1000);
            var greeting = yield _get('/something.ajax?greeting', resume)
            var who = yield _get('/else.ajax?who&greeting=' + greeting, resume)
            console.log(greeting + ' ' + who)
        }
        catch (e) {
            console.log(e);
            throw e;  
        } 
    });

Интересно, не правда ли? Централизованная обработка исключений и понятный порядок исполнения.
Читать дальше →

Bind, Call и Apply в JavaScript

Reading time3 min
Views122K
От переводчика:
Прошу принять во внимание, что приведенный здесь код, возможно, не является хорошими практиками. Тем не менее разбор сниппета из этого поста может оказаться еще одним поводом окунуться в функциональный JavaScript.


Недавно я увидел изящный JS сниппет в этом твите.
var bind = Function.prototype.call.bind(Function.prototype.bind); // #fp

Взглянув на него, я смог догадаться, что он делает. Он превращает x.y(z) в y(x, z). Радуясь как ребенок, я показал его своим коллегам. Они спросили меня, что же тут происходит. Я открыл рот, чтобы объяснить и… не смог сказать ни слова. Я развернулся и ушел.
Читать дальше →

WWDC’10-тотализатор

Reading time1 min
Views688
Сегодня, как уже известно из многочисленных источников, в 21:00 по московскому времени в Сан-Франциско начнется Worldwide Developers Conference — ежегодная конференция разработчиков на платформе Apple.
Нельзя сказать, что я являюсь ярым поклонником Apple, но мне всегда было интересно наблюдать за их конференциями и делать прогнозы. Хабралюди, давайте устроим тотализатор! Предложение такое:
  1. Каждый, кто хочет участвовать в тотализаторе, делает в комментариях свое предположение и выделяет его жирным шрифтом. Вот так.
  2. Каждый, кто согласен с предположением, плюсует комментарий. Кто не согласен — делает комментарий с противоположной формулировкой. Например: если вы не согласны с «на сцену выйдет Стив Балмер», то вместо того, чтобы минусовать его, публикуете «Стив Балмер на сцену не выйдет». В таком случает и статистика получится более объективной, и хабрасила целой останется.
  3. После окончания WWDC’10 авторам наиболее интересных сбывшихся предположений ставим в карму плюс. То есть сбывшееся «новый Айфон покажут в 9:41 по местному времени» гораздо интереснее сбывшегося «Стив Джобс будет в свитере и джинсах». Оригинальные предположения лучше очевидных!
  4. И да, предположения лучше разносить в разные комментарии.

Хабралюди, погадаем?

Начало продаж iPhone 3G

Reading time2 min
Views1.3K
В этой публикации я хочу изложить свои личный впечатления от события, которое устроила Apple в первой половине июля.

Очередь за новым Айфоном в Нью-Йорке появилась 4 июля, в День независимости. Люди ночевали прямо на улице в спальных мешках.

Читать дальше →

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity