Задать вопрос
Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (3)

Наибольший вклад в теги

Все теги (20)

Лучшие ответы пользователя

Все ответы (43)
  • Как "обойти" асинхронность в данном примере?

    @Faliah
    Ваш первый res.send отправляет все заголовки и тело, что завершает вес процесс запрос-ответ и закрывает возможность использовать текущий объект res для отправки чего-либо. В данном случае вам нужно убрать из кода первый вызов res.send и вы получите "Hello 2". Никаих обходов асинхронности, глобальных переменных и прочего вам не нужно. Переменная res будет и так доступна внутри коллбэка, если вы не перекрываете её где-то в области видимости.
    Ответ написан
    Комментировать
  • Почему без return function код не работает?

    @Faliah
    В данном случае вы получаете своего рода фабрику счётчиков. При каждом вызове makeCounter() возвращается ссылка на объект фунции, а не на её результат. Так же в данном примере используется замыкание, которое дает возвращаемой функции возможность обращаться к переменной currentCount, которая нахоится в родительской области видимости.
    function makeCounter() {
    
      var currentCount = 1;
    
      return function() {
        return currentCount++;
      };
    }
    
    var counter = makeCounter();
    var counter1 = makeCounter();
    
    console.log(counter()); //1
    console.log(counter()); //2
    // счётчики работают независимо друг от друга
    console.log(counter1()) //1


    Этот пример, конечно больше синтетический, зато охватывает несколько чрезвычайно важных концепций в JS, а именно: замыкания, области видимости, first-class function. First-class function, в свою очередь, означает ряд принципов, которым следуют абсолютно все функции, создаваемые в JS:
    • Каждая функция является объектом или экзмепляром объектоного типа (instance of Object type)
    • У функции могут быть свойства. К примеру запись makeCounter.foo = "bar", абсолютно валидна. Подобный подход используется для создания статических свойств функции
    • Ссылку на объект функции можно сохранить в переменной, а потом вызвать эту функцию. Как в вашем примереcounter()
    • Можно передавать функцию в качестве параметра в другую функцию
    • Функцию можно возвращать из другой функции, как в вашем примере


    Таким образом, хотя данная функция не несёт в себе сложной логики, но она иллюстрирует множество важнейших концепций, без знания которых будет очень тяжело понимать как работают многие бибилиотеки
    Ответ написан
    Комментировать
  • Может ли частое использование transition в css лагать сайт?

    @Faliah
    Для начала, ответ на вопрос - да, частое использование transition в css может лагать сайт

    Анимации могут добатить лагов, если сделаны без понимания сути работы механизма. В частности самыми дешевыми на данный момент (применимо к chrome и частично firefox, не могу сказать за IE и Edge) являются анимации свойств opacity, различные transform: translate, scale, rotate.
    Последнее время в этих вопросах я почитываю различные метериалы от инженера Google Paul Lewis'а, вот ссылки на несколько материалов:
    Статья из его личного блога по animation performance
    Статья по animation performance совместно с Paul Irish
    Нереально крутой туториал по параллаксу, от которо...
    Плейлист в Google Developers на Youtube, где Пол и...
    Ответ написан
    Комментировать
  • Как получить this класса внутри его метода?

    @Faliah
    Контекст this теряется, если ваш метод вызывается не из экземпляра класса, в котором он объявлен. Нужно использовать bind, чтобы привязать функцию к экземпляру.
    const show = element => {
      element.classList.add('show');
    }
    
    class Modal {
      constructor() {
        this.modal = document.get...
      }
    
      open(endAction) {
        show(this.modal);
        
        endAction();
      }
    }
    
    class Slider {
      constructor() {
        this.overlay = document.get...;
      }
    
      openSlider() {
        show(this.overlay);
        console.log(this); // Slider
      }
    
      openModal() {
        const modal = new Modal();
    
        modal.open(this.openSlider.bind(this));
      }
    }


    Или с ES6 стрелочной функцией, результат один и тот же:

    const show = element => {
      element.classList.add('show');
    }
    
    class Modal {
      constructor() {
        this.modal = document.get...
      }
    
      open(endAction) {
        show(this.modal);
        
        endAction();
      }
    }
    
    class Slider {
      constructor() {
        this.overlay = document.get...;
      }
    
      openSlider() {
        show(this.overlay);
        console.log(this); // Slider
      }
    
      openModal() {
        const modal = new Modal();
    
        modal.open(() => this.openSlider());
      }
    }
    Ответ написан
    5 комментариев
  • Ruby: "Дорожная карта", пoмoгите составить?

    @Faliah
    Сегодня на хабре опубликовали статью. Ознакомьтесь с ней и ссылками на другие материалы, которые в ней есть. Там все довольно четко расписано. Просто выпишите себе список сущностей, которые перечисляет автор "миграции", "модели", "роуты", "вьюхи". Все это есть на официальном сайте с туториалом по Rails. Изучите. Попробуйте воспроизвести то, что делал автор. Уверен, если вы будете способны реализовать что-то похожее на написанный автором форум, то без труда найдете себе заказчиков. Ну и будете готовы глубже погружаться в "тему"

    И да, без JS будет туго, так что его обязательно в список
    Ответ написан
    1 комментарий