#14 Все еще асинхронность

#14 Все еще асинхронность

- 5 mins

Решил выкатить новый блог на день раньше, и не потому что многое успел и горю желанием поделиться успехами, а скорее поныть в очередной раз как все-таки тяжела асинхронность :sweat_smile:. Асинхронность действительно сложная штука, которую непросто понять даже при полном погружении в среду множества коллбеков и расписывая на листочке каждый возврат функций. Но при этом, если подходить к проблеме более комплексно, то постепенно приходит долгожданное понимание, которое и позволяет двигаться дальше, не из-за того, что без предыдущего шага не будут понятны следующие, а потому, что каждый “момент осознания” вновь сполна наполняет мотивацией и поднимает настроение на целый вечер.

promise

Шесть дней назад я начал изучать курс “Синхронная асинхронность”, и как бы вам так сказать - с одной стороны я конечно рад что у меня что-то получается, иногда даже сам разбираюсь в этих сложных заданиях, POST/GET-запросах, промисах и тд, а с другой - трачу на это очень много времени. Представьте, курс рассчитаный на 9 часов у меня занял около 13, при том что прошел только 70% и остались еще 3 самых сложные урока. Из-за этого не всегда такое “развитие” приносит удовольствие и часто кажется будто я необучаемый и усваиваю все в 2 раза дольше, чем большинство остальных. Но конечно, это никоим образом не означает, что я начинаю сдаваться, нет, это наоборот заставляет меня упражняться еще больше, интенсивнее и пробовать какие-то другие методы в изучении необходимого материала.


Самым сложным было понимание фишек ES6, вроде промисов, итераторов и генераторов (до async/await пока не дошел). Вы наверное уже знаете, что я люблю получать информацию сразу из нескольких источников (пусть иногда и одинакового типа), поэтому нагуглив пару интересных материалов, спешу поделиться с вами:

Проштудировав каждую статью и просмотрев каждый видеоролик, хочешь не хочешь, но начинаешь понимать хотя бы что-то из этой кучи непонятных ранее конструкций, которые к моему удивлению оказались достаточно удобными, и без них разработка в современном JavaScript была бы очень непростой задачей. Мало того, недавно в понимании EventEmitter’a мне помогла простенькая реализация своей версии этого эмиттера (код ниже). Это я к тому, что практика дает значительно большее понимание и позволяет разобраться в чем-то намного быстрее (хотя согласитесь, иногда так лень практиковаться, да?).

See the Pen NwogKK by SayoBye (@gfgdghfghh) on CodePen.

Пока не понял только как передать значение переменной по ссылке, подскажите если кто-нибудь знает как это можно реализовать именно в классе эмиттера, чтобы работа с объектом происходила без каких-либо специальных требований.

Сложно сказать как долго я буду проходить Back-end-курс, впереди еще базы данных, Express.js и многое другое, по моим подсчетам, необходимое время на изучение оставшихся материалов - примерно 80 часов, из которых 28 часов уже “прошли” (потратил как раз на “Автоматное программирование”, “Синхронную асинхронность” и небольшую часть “Деревьев”). В идеале - думаю за пару недель управиться (но скорее всего как обычно потребуется раза в 2 больше времени).

А пока лишь представляю, как буду реализовывать свой первый большой проект. Долго думал что же это может быть и пришел к выводу, что мне как и раньше было бы интересно сделать свой аналог сайта RankedFTW, в настоящий момент RankedFTW это сайт с ладдерной статистикой Starcraft2, на котором можно просматривать рейтинг отдельных игроков и видеть общее положение дел на разных серверах используя выборку по лиге, расе или каким-то другим параметрам. Достаточно сложная задача для первого проекта, тут тебе и работа с API, и выборка, и реализация графиков, но никто не мешает сделать немного упрощенную версию, которая просто “будет работать” без всяких излишеств.

ranked

На сегодня это пожалуй все события с прошедшей недели, постараюсь также набирать обороты и не ленясь, стойко следовать намеченному плану, чтобы в следующий раз гордо поделиться своими успехами и выдавать хотя бы немного интересного контента :heart:

comments powered by Disqus
rss facebook twitter github youtube mail spotify lastfm instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora quora