Да, извиняюсь. Перефразирую: Proxy входит в утвержденный стандарт ES6. Но сам ES6, судя по http://kangax.github.io/compat-table/es6/, полностью нигде не поддерживается
Ну так нет ничего страшного в инъекциях. Инжектор в Angular достаточно умен, чтобы не делать лишних действий.
Дело конечно ваше: можете использовать и обычный setTimeout с вызовом $digest внутри него.
В статье я просто рассказал про устоявшийся в Angular паттерн c $timeout
Используется событие «input» (keyup может применяться для поддержки IE6, хотя ангуляр с ним не дружит)
В целом — да, согласен.
Тут используется setTimeout, он уже и вызывает код когда другой код не выполняется (один поток же)
В итоге — да. Но судя по исходникам, последовательность получается такая:
ждет, пока закончится текущий потом выполнения ($browser.defer — это суть setTimeout)
выполняет наш код
вызывает $rootScope.$apply()
Опять же судя по исходникам, $apply(), помимо прочего, пытается запустить $digest
Скорее между ViewModel и View, но все равно это частный случай, $digest-цикл — это процесс поиска изменений (dirty-checking) данных и вызов подписчиков (обработчиков). А что они будут синхронизировать (или не будут) это уже дело десятое.
Счел Ваши мысли вполне логичными и, так как allSettled не является полифиллом и не расширяет прототип, то сделал из него полноценный модуль без внесения изменений в нативные конструкторы ;)
Ох, ребята… Да о чем вы все вообще? Это интерпретируемый язык, что изначально говорит о том, что каждый движок интерпретирует его по своему. А если учесть, что в любой последующей версии любого движка могут прикрутить любую оптимизацию, которая кстати может убить ту оптимизацию, которую проделал разработчик, то вся эта оптимизация со стороны разработчика становится погоней за миражом.
Пишите код, получайте от этого удовольствие и не забывайте о производительност и эффективности своих алгоритмов(большое «О»). Но заниматься оптимизацией под лупой в интерпретируемом языке — неблагодарное дело, по причине, которую я описалвыше, кроме совсем явных мест.
Другое дело, если вы точно знаете под какой движок пишите и излазили его исходники вдоль и поперек.
Так же согласен с предыдущим оратором. Посмотрите на код современных не ES6 библиотек. Где там читаемость? Там сплошная оптимизация.
Вопрос читаемочти кода из разряда холивара :)
За исключением явного нагромождения кода.
Зная, что concat может принимать как массив, так и обычные значения, превращая их а плоский массив — такая, запись становится очень даже понятной
И да, забыл упомянуть: смысл именно такого concat'а в том, чтобы можно было передавать обычные значения и значения в миссиве в перемешку межлу собой и в последствии получить плоский массив
Если трансформировать этот код через babel, который поддерживает практически все последние нововведения в язык, то всё будет работать именно так, как я описал ;)
Es6 умеет определять имя функции в var someName = function expression.
Es5 в данном случае будет содержать имя переменной, которой была присвоена функция
На данный момент, ES6 поддерживается ох как не везде )
Дело конечно ваше: можете использовать и обычный setTimeout с вызовом $digest внутри него.
В статье я просто рассказал про устоявшийся в Angular паттерн c $timeout
и чем это тогда будет отличаться от вызова $timeout? :)
В целом — да, согласен.
В итоге — да. Но судя по исходникам, последовательность получается такая:
Опять же судя по исходникам, $apply(), помимо прочего, пытается запустить $digest
всё верно ;)
Пишите код, получайте от этого удовольствие и не забывайте о производительност и эффективности своих алгоритмов(большое «О»). Но заниматься оптимизацией под лупой в интерпретируемом языке — неблагодарное дело, по причине, которую я описалвыше, кроме совсем явных мест.
Другое дело, если вы точно знаете под какой движок пишите и излазили его исходники вдоль и поперек.
Так же согласен с предыдущим оратором. Посмотрите на код современных не ES6 библиотек. Где там читаемость? Там сплошная оптимизация.
За исключением явного нагромождения кода.
Зная, что concat может принимать как массив, так и обычные значения, превращая их а плоский массив — такая, запись становится очень даже понятной
Es5 в данном случае будет содержать имя переменной, которой была присвоена функция