-
Notifications
You must be signed in to change notification settings - Fork 2
Добавил возможность посылать тип сообщений-команда #4
base: master
Are you sure you want to change the base?
Conversation
|
ping @sergeche , @a-ignatov-parc |
index.js
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Без скобок для for адово уже
|
Ну и было бы не плохо вот это сделать #5 |
|
ок |
|
Тут опять вижу проблемы с проектированием: зачем на запрос команды отвечать отдельным событием? Я себе логику работы представляю вот так: eventBus.request('get-something').then(function() { ... });
// отвечаем на команды
eventBus.on('get-something', function(response) {
doAjaxRequest('/my/endpoint', function(data) {
response.resolve(data);
});
});То есть метод |
|
@sergeche , я тебя не понял |
|
Мой вопрос: зачем весь этот зоопарк решений и переопределение функциональности |
|
Вот смотри, представим себе чистое окружение, в котором кроме eventBus больше ничего нет. И для ответа на команду мне нужно сделать аякс-запрос. Ни в одной из твоих реализаций я не смогу сделать вот так: eventBus.on('get-data', function(response) {
var xhr = new XMLHttpRequest();
xhr.open('GET', '/url');
xhr.addEventListener('complete', function() { response.resolve(xhr.resonseText); });
xhr.send();
});Потому что мне нужно либо сразу вернуть ответ, либо вернуть deferred, причём, не любой deferred, а именно тот, который понимаешь ты. То есть тянуть за собой jQuery, котороя является неявной зависимостью этой библиотеки. |
|
В таком случае, можно просто оставить так и забить на eventBus.on, либо сделать так |
|
Ещё раз повторю вопрос: зачем столько разных вариантов, которые работают/не работают в определённых окружениях, если можно оставить один, который будет работать везде? |
|
мне казалось, что возвращать promise или просто объект, будет удобнее в использовании, вместо необходимости явно вызывать |
|
Так как promise не является (пока) чем-то нативным, это означает, что для работы с твоим механизмом нужна будет ещё одна зависимость, что гораздо неудобнее, чем вызвать переданный promise/функцию. |
|
Серега, спасибо за комментарии, понял твою мысль, уберу лишнее. |
|
Реализовал следующую интерфейс при работе с командами по поводу поддержки команд через метод |
|
Для Грубый пример того как можно реализовать метод // Интерфейс фасада
{
on: function() { ... },
off: function() { ... },
trigger: function() { ... },
then: function(callback) {
if (typeof callback === 'function') {
callback();
}
return this
}
}
// Как сделать чтоб `then` работал правильно при вызове команды через метод `trigger`
// [INFO] Это набросок реализации.
{
trigger: function() {
if (isCommand) {
var deferred = $.Deferred();
bus.publish({
data: [deferred, ..args]
});
return _.extend({}, this, {
then: deferred.then.bind(deferred)
});
}
}
}После чего если была вызвана команда то then будет завязываться на резолв промиса, если команда не была вызвана, то Оба варианта будут возвращать ссылку на интерфейс фасада. |
|
Так же мне никто не ответил зачем в посталовском паблише нужно передавать топик с префиксом |
мне не нравится это решение тем что у нас появится куча объектов клонов и мы просто По поводу Либо через Аналогично, при вызове вызове событий, сохраняющих состояние ( |
|
Я вот честно не понимаю необходимости менять внутренности |
|
Тут больше не в чейнинге удобство, а в простой конструкции фасада. А по идее у него есть лишь базовые методы Если добавляется другой метод для реализации функционала, то префиксы в нем уже не нужны. Проблемы с памятью это оч надуманный момент + GC все это подчистит когда объект перестанет использоваться. В первую очередь нужно думать об удобстве использования. У постала все параметры передаются через хедеры, так зачем придумывать что-то свое чего нет в базовом функционале? Напомню, что префиксы придуманы для фасада для модификации поведения (считай это плагинами) |
|
убрал переопределение метода Антон, поддержку then для триггер, не делал, пока не уверен что нужно. т.е передавать callback всегда последним аргументом |
|
Зачем вообще делать |
|
сейчас как раз есть возмoжность выполнить такое |
|
Я понимаю, что есть такая возможность. Я не понимаю, зачем в принципе в контексте работы с request/response нужно делать |
|
Для Если оставляем только |
|
оставил только request и выпилил везде префикс / |
|
Отлично! И нужно написать тесты для |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Оч удобно в комитах добавлять текст fix #5 что автоматически закроет issue #5 при мердже в мастер
|
Стоит ли прикрутить EventStreaming как в FRP (на примере Bacon.js)? |
lib/request-response.js
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Зачем использовать другую библиотеку промисов если:
а) это внутренний механизм для работы библиотеки
б) промисы по умолчанию встроены в твою библиотеку (то есть не получится их выпилить чтобы сэкономить на размере)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
что значит использовать другую библиотеку?
Ты предлагаешь вообще отказаться от промисов или использовать свою реализацию ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Нет, это комментарий к твоему предыдущему, удалённому комментарию про возможность использования других промисов, если захочется
Будет время гляньте и откоментируйте