Принимает на вход поток событий и возвращает первое событие этого потока, после чего завершает свое выполнение. В качестве аргумента может принимать функцию фильтрации.
Подключение first() - import { first } ‘rxjs/operators’
Пример - перехватываем только первый клик на документе, все последующие - игнорируем:
Более интересный пример - возвращаем первое событие потока, которое удовлетворяет условию; после чего прекращаем работу:
Метод last()
Противоположность методу first(); принимает на вход поток событий и возвращает последнее событие этого потока; после чего прекращает свою работу.
Метод timer позволяет создавать удобную возможность выполнять что-либо через заданный промежуток времени.
Синтаксис - timer(delayTime, intervalTime).
Подключение - import { timer } from ‘rxjs’;
Пример кода:
Здесь - с задержкой в одну секунду (и с интервалом также в одну секунду) в консоли пойдут значения - 0, 1, 2, 3, 4 и тд. Если задержка не нужна, тогда можно поставить 0:
Если нужно, чтобы timer сработал как метод setTimeout в классическом JavaScript, то нужно опустить второй аргумент - интервал выполнения:
… в этом случае команда выполнится один раз - в задержкой в одну секунду.
Маленький практический пример использования timer:
… это получился простейший таймер (не обратного отсчета). При использовании в Angular можно задействовать встроенный pipe - date: ‘hh:mm:ss’.
Интересная особенность - первым параметром можно задать дату запуска таймера - signature: timer(initialDelay: number | Date, period: number, scheduler: Scheduler): Observable.
Не пробовал, но надо взять на заметку.
На timer очень похож метод interval, однако timer можно рассматривать как расширенный и более гибкий вариант interval.
Команда git stash предназначена для того, чтобы поместить текущие изменения в отдельное хранилище и вернуть файлы к исходному состоянию. То есть git stash прячет изменения в файлах и сохраняет эти изменения отдельно, чтобы потом можно было их вернуть.
Сохранение изменений
… создать stash с человекопонятным описанием этого stash - чтобы можно было через день, глядя на него, догадаться вообще, что это такое и зачем оно делалось.
… создать stash с изменениями, которые еще unstaged. Иначе они просто не попадут в снимок stash.
… создание новой ветки из stash@{0}. Важный момент - чтобы изменения попали с новую ветку, они должны сначала быть помещены в stash@{0}.
… поместить изменения из конктерного stash@{1} в новую ветку newAwesomeBranch.
… выборочное сохранение измененых файлов. Запускается пошаговый мастер, который будет последовательно спрашивать - помещать измененый файл в stash или нет.
Показ сохраненных изменений
… показать, какие файлы изменены. Краткая справка, которая просто показывает, где были изменения и в каких файлах.
… показать краткие изменения в конкретном stash.
… показать изменения в файле. Можно увидеть в файле, что было добавлено или удалено.
… показать список всех снимков stash. Причем, снимок с номером stash@{0} - это самый последний по времени снимок stash. Дальше - понарастающей - чем больше номер, тем раньше по времени он был сделан.
Удаление сохраненных изменений
… удалить определенный снимок stash@{1}.
… удалить последний снимок stash@{0}.
… удалить все изменения stash.
Применение сохраненных изменений
… применить последний по времени снимок stash.
… применить конкретный снимок stash.
… сокрещение от двух команд - apply и drop - применяет и автоматически удаляет после применения последний снимок stash - stash@{0}.
… сокрещение от двух команд - apply и drop - применяет и автоматически удаляет после применения конкретный снимок stash - stash@{2}.
Шаблон раннего возврата (return early pattern) в JavaScript - это простой способ уменьшить число else-операторов в теле функции до нуля. Есть много причин, чтобы предпочесть этот шаблон использованию else-операторов.
Уменьшение общего количества кода на странице
Уменьшение длины строк кода упрощением логической сложности
Улучшение удобочитаемости кода
Суть шаблона раннего возврата (return early pattern) заключается в том, чтобы заменить необходимость дополнительных условий в функциях JavaScript, используя ключевое слово return в теле оператора if.
Создадим функцию, которая ведет себя по-разному при определенных условиях (примечание: это тривиальный и надуманный пример, просто чтобы получить представление о сути вопроса):
Хотя данная функция кажется читаемой, добавим в нее еще одно условие для проверки того, что функция вызывается для работы с объектом вместо undefined:
Эта функция понятной и ее имя является описательным, однако она представляется все-же излишне сложной. Можем ли мы использовать шаблон раннего возврата (return early pattern) для повышения удобочитаемости и уменьшения количества else-выражений?
Попробуем:
Используя шаблон раннего возврата (return early pattern), мы смогли удалить все ненужные else-инструкции и сделать функцию намного яснее и более краткой.
Бонус: одно условное выражение
Мы можем дополнительно переписать функцию для использования только одного оператора if.