• Как понять инкапсуляцию стилей?

    0xD34F
    @0xD34F
    Помогите пожалуйста написать учебный пример чтобы было видно действие и выгода инкапсуляции стилей. Мой вариант тут.

    "Помогите"? Да вы и сами справились. Только зачем-то сами же всё и поломали.

    непонятно какое действие осуществляет метааргумент encapsulation: ViewEncapsulation.None

    Это отключение инкапсуляции стилей компонента.

    Есть корневой элемент и есть вложенный элемент. В каждом из них я отключил инкапсуляцию, но в результате к обоим применяются стили из первого. Где логика?

    Кажется, вы забыли о том, что у вас в стилях дочернего компонента background закомментирован - потому и применяется стиль из родительского компонента. Уберите комментирование - и оба элемента будут стилизованы в соответствие с правилом из дочернего компонента.

    А ещё лучше - прекратите вдобавок отключать инкапсуляцию, и тогда элементы из разных компонентов будут стилизованы каждый по-своему, несмотря на то, что имя класса - одно и то же. Собственно, в этом и состоит, как вы там выразились? - "выгода инкапсуляции" - вы можете в каждом из компонентов определять собственные правила стилей, не беспокоясь о том, что они будут пересекаться со стилями других компонентов.
    Ответ написан
    3 комментария
  • Ecmascript проприетарная технология?

    Stalker_RED
    @Stalker_RED
    Не поделятся исходниками чего? Спецификаций?

    Будет движуха в стиле "а давайте решим, кто теперь будет придумывать новые спеки".

    С существующими скриптами, фреймворками и движками не случится ничего.
    Ответ написан
    4 комментария
  • Как удалить смерженную ветку?

    1. Вы хотите плохого.
    2. Чтобы это сделать, вам нужно заребейзить коммиты 91d2463, 3e391bf с 3a0067f на 8b04f4d.
    Ответ написан
    Комментировать
  • Как удалить смерженную ветку?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как видите, ответвление 91d2463, 3e391bf по-прежнему существует. Помогите пожалуйста от него избавиться.

    От него нельзя избавиться не переписывая истории master. Удаление ветки -- это удаление линии истории, которая заканчивается коммитом 91d2463. Но этот коммит уже замёржен в master, удаление ветки на вид master никак не повлияет.

    Я хотел бы избавиться от ответвления: 91d2463, 3e391bf чтобы история выглядела как одна линия.

    Если хочется переписать master и получить линейную историю можно сделать git rebase 3a0067f.
    Ответ написан
    Комментировать
  • Почему не выводятся console.logs?

    0xD34F
    @0xD34F
    Проблема в том, что второй компонент не выводит ни одного console.log().

    Потому что ни одного console.log у вас там нет - есть console.debug.

    Браузер у вас Chrome, да? - он по умолчанию debug не выводит. В консоли есть выпадающий список, где перечислены типы сообщений, которые надо выводить - Verbose, Info, Warnings, Errors - отметьте все. Ну или замените debug на log.
    Ответ написан
    Комментировать
  • Как происходит отписка через takeUntil?

    @dmitrygavrish
    1) Правильно ли я понимаю, что первая строчка передаёт в Subject пустое значение(но всё же значение) и это заставляет Subject излучить хоть что-то?

    Все верно. В коде указан тип
    private ngUnsubscribe: Subject<void> = new Subject<void>();
    , cледовательно ничего кроме "пустого" значения передать в .next() компилятор тайпскрипта и не разрешит.

    2) А по поводу this.ngUnsubscribe.complete();

    The Observer callback to receive a valueless notification of type complete from the Observable. Notifies the Observer that the Observable has finished sending push-based notifications.

    Т.е., судя по всему, никто больше слушать данную последовательность не будет/не сможет после вызова данного метода
    Ответ написан
    Комментировать
  • Как выводить результат оператора do после основного действия?

    @dmitrygavrish
    Оператор do никак не влияет на последовательность, вы просто "вклиниваетесь" в нее, получаете ее текущие данные и можете запустить какие-либо side effects на основании этих данных (результат выполнения функции в do никак не влияет на данные, которые окажутся в следующем операторе, либо конечной подписке). На сам таймер вы подписаны после оператора do, поэтому сначала выполнятся действия в do, затем в subscribe.

    Точно также любое действие выполнится в любом другом операторе до того, как вы попадете в subscribe, но другие операторы так или иначе меняют исходную последовательность.

    Чтобы добиться нужного вам поведения, можете записать последовательность в переменную и подписаться на нее 2 раза в нужном порядке:
    const obs = Observable.timer(0, 3000);
    obs.subscribe(i => console.log(i));
    obs.subscribe(i => console.log('tick', i));
    Ответ написан
    Комментировать
  • Как смержить два запроса через mergeMap?

    0xD34F
    @0xD34F
    .mergeMap(() => this.httpClient.get('https://api.github.com/users'), (event, users) => ({ event, users }))
    Ответ написан
    3 комментария
  • Почему setTimeout() срабатывает без второго аргумента?

    SagePtr
    @SagePtr
    Еда - это святое
    "Какая-то цифра" - это идентификатор таймаута, которую функция возвращает, может быть в дальнейшем использован для передачи в функцию clearTimeout (отменяет таймаут).
    А второй аргумент - задержка в милисекундах, если не задано, то используется 0, но в реальности это не значит, что функция будет мгновенно выполнена, может пройти 16 мс или даже больше (в зависимости от нагруженности браузера).
    Ответ написан
    Комментировать
  • Почему setTimeout() срабатывает без второго аргумента?

    Xuxicheta
    @Xuxicheta
    инженер
    потому что
    var timeoutID = scope.setTimeout(function[, delay, param1, param2, ...]);

    delay - не обязательный параметр
    delay - Optional
    The time, in milliseconds (thousandths of a second), the timer should wait before the specified function or code is executed. If this parameter is omitted, a value of 0 is used, meaning execute "immediately", or more accurately, as soon as possible. Note that in either case, the actual delay may be longer than intended; see Reasons for delays longer than specified below.

    т.е. если задержка не определена, то выставляется ноль.
    А про идентификатор таймера написали уже.
    Ответ написан
    Комментировать
  • Почему setTimeout() срабатывает без второго аргумента?

    @Arik
    у меня все сразу работает.

    Кроме того, если её запустить в консоли браузера хром, то кроме фразы 'hello' выводится какая-то цифра.

    setTimeout() также как и setInterval() возвращают числовой идентификатор счетчика, чтоб можно было по нему отменить через clearTimeout(timeoutId)/clearInterval(intervalId)
    Ответ написан
    1 комментарий
  • Как объяснить сложение двух асинхронных потоков?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Я так понимаю, опять фантазируете вместо того, чтобы загуглить документацию. Чёрным по белому сказано же:

    next transaction (subscription) cannot start until the previous completes

    Хотите, чтобы было "независимо" - используйте merge вместо concat.
    Ответ написан
    Комментировать
  • Почему среднее значение разное?

    rockon404
    @rockon404
    Frontend Developer
    range создает диапазон range(n, m) по формуле:
    n, n + 1, n + 2, ..., n + m - 1

    В первом случае диапазон от 1 до 5, так как 1 + 5 - 1 = 5:
    1, 2, 3, 4, 5
    Во втором случае диапазон от 0 до 4, так как 0 + 5 - 1 = 4:
    0, 1, 2, 3, 4

    Сумма в первом случае:
    { sum: 15, count: 5 }
    во втором:
    { sum: 10, count: 5 }

    Другими словами n - это первое значение диапазона, m - количество элементов входящих в диапазон.

    Результат, в первом случае:
    x = 15 / 5;
    во втором:
    x = 10 / 5;
    Ответ написан
    Комментировать
  • Почему среднее значение разное?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Второй параметр в range - это количество элементов, а не конечное значение (как вам, по-видимому, показалось).

    То есть, в первом случае последовательность такая: 1, 2, 3, 4, 5. А во втором такая: 0, 1, 2, 3, 4. Соответственно, 15 / 5 = 3, 10 / 5 = 2, всё правильно.
    Ответ написан
    Комментировать
  • Почему не выводится результат из Observable?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Этот код вместо результата выводит undefined.

    Под "выводит" вы подразумеваете результат вызова console.log, да? Что ж, ничего ваш код не выводит - console.log не вызывается ни разу, undefined возникает в консоли потому, что последнее, что вы делаете - вызываете метод subscribe, который ничего не возвращает.

    Отсутствие вывода обусловлено пустотой массива result, а пуст он потому, что... Нет, не буду объяснять - разберитесь, как стрелочными функциями пользоваться, и найдите свои ошибки сами.
    Ответ написан
    3 комментария
  • В чём разница между git reset и git reset --soft?

    VladimirAndreev
    @VladimirAndreev
    php web dev
    --soft сбрасывает коммит так, будто git add на файлы сделан
    --mixed сбрасывает коммит так, будто не было git add на эти файлы, это по-умолчанию.
    --hard сбрасывает коммит и удаляет изменеия. Но, коммит доступен по своему хэшу, если он не удален gc
    Ответ написан
    8 комментариев
  • Как откатить unstaged изменения?

    youngmysteriouslight
    @youngmysteriouslight
    ТК, ТТ, JS, FP, WM
    А что насчёт
    git clean -d -x -f && git reset --hard
    или Вам принципиально, чтобы именно одной командой?
    Ответ написан
    6 комментариев
  • Как периодически возвращать асинхронные значения?

    dasha_programmist
    @dasha_programmist
    ex Software Engineer at Reddit TS/React/GraphQL/Go
    ты возвращаешь Observable а тебе надо его распаковать
    return Observable.timer(0, 3000).flatMap(()=>this.httpClient.get(Config.host + `tasks`)).map((r) => {
          console.log(r);
          return r;
        });
    Ответ написан
    Комментировать
  • Как унаследовать от более общего класса?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Пусть родительский конструктор принимает значения общих свойств и устанавливает их:

    function Ship(x, y) {
      this.x = x;
      this.y = y;
    }

    Вызывайте его в дочерних конструкторах, указывая в качестве контекста текущий экземпляр:

    function PlayerShip(x, y) {
      Ship.call(this, x, y);
      this.petrol = 100;
    }
    Ответ написан
    2 комментария