Производительность для мобильных приложений становится критической. И подход two-way binding'a уже не кажется решением всех проблем (AngularJs). Как и генерация страницы целиком на стороне клиента (ReactJs) у меня по прежнему вызывает лишь один вопрос — зачем? Зачем мне виртуальный DOM?
Не понимаю тогда, к чему этот абзац в статье? Как вы предлагаете решать проблему биндинга данных в веб-приложениях? Ваша библиотека изоморфна, умеет рендерить представление и на сервере, и на клиенте?
Я, к сожалению, не могу понять, что вы имеете в виду этим кодом. Вы избавились от bind(...)? Тем не менее вы создаете новую анонимную функцию для каждого инстанса.
Я ожидал хотя бы ссылки на исследование, а тут в первом предложении даже нет подлежащего. Кто обнаружил интересный факт и при каких обстоятельствах — не понятно.
Проверил. В Canary 34.0.1808.0 метод так же называется throw. Тем не менее, вот пример с корректной обработкой исключений, работающий в Canary: jsfiddle.net/UERy3/
Судя по всему коллбэки (которые являются результатом исполнения resume()) строятся в стэк, результаты из которого и передаются по очереди в генератор. Это позволяет знать порядок, в котором необходимо отдавать значения, соответственно нужные значения в таком случае поставятся вместо нужных yield.
Я могу ошибаться, более точно изучить поведение genny можно тут: https://github.com/spion/genny/blob/master/index.js
Не понимаю тогда, к чему этот абзац в статье? Как вы предлагаете решать проблему биндинга данных в веб-приложениях? Ваша библиотека изоморфна, умеет рендерить представление и на сервере, и на клиенте?
Этот способ мне напоминает реализацию приватных свойств с помощью
WeakMaps
(пример). Только там нет возможной путаницы сthis
иself
.bind(...)
? Тем не менее вы создаете новую анонимную функцию для каждого инстанса.Предложенный вами способ ведь точно так же создает методы для каждого экземпляра класса заново.
callback hell
так же отлично спасают промисы.То есть государственные органы выигрывают в 97% случаев.
genny
делает ровно то же, что и ваш первый пример: так же выполняет две асинхронные операции перед тем, как продолжить выполнение генератора.Canary 34.0.1808.0
метод так же называетсяthrow
. Тем не менее, вот пример с корректной обработкой исключений, работающий вCanary
: jsfiddle.net/UERy3/Судя по всему коллбэки (которые являются результатом исполнения
resume()
) строятся в стэк, результаты из которого и передаются по очереди в генератор. Это позволяет знать порядок, в котором необходимо отдавать значения, соответственно нужные значения в таком случае поставятся вместо нужныхyield
.Я могу ошибаться, более точно изучить поведение
genny
можно тут: https://github.com/spion/genny/blob/master/index.js