Добавил возможность посылать тип сообщений-команда#4
Добавил возможность посылать тип сообщений-команда#4UDenis wants to merge 12 commits intoInnovaCo:masterfrom
Conversation
|
ping @sergeche , @a-ignatov-parc |
index.js
Outdated
There was a problem hiding this comment.
Без скобок для 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.
Оч удобно в комитах добавлять текст fix #5 что автоматически закроет issue #5 при мердже в мастер
|
Стоит ли прикрутить EventStreaming как в FRP (на примере Bacon.js)? |
lib/request-response.js
Outdated
There was a problem hiding this comment.
Зачем использовать другую библиотеку промисов если:
а) это внутренний механизм для работы библиотеки
б) промисы по умолчанию встроены в твою библиотеку (то есть не получится их выпилить чтобы сэкономить на размере)
There was a problem hiding this comment.
что значит использовать другую библиотеку?
Ты предлагаешь вообще отказаться от промисов или использовать свою реализацию ?
There was a problem hiding this comment.
Нет, это комментарий к твоему предыдущему, удалённому комментарию про возможность использования других промисов, если захочется
Будет время гляньте и откоментируйте