Как узнать текущую стоимость объекта?

Первая запись в FAQ...

Метода getLatestValue нет и не будет.

Вы получаете значение, подписываясь на поток/свойство (используя onValue) и обрабатывая значения в обратном вызове.

Что делать, если я не готов к получению ценности в то время, когда она поступает? Не означает ли это, что я должен хранить его копию?

Если вам нужно подписаться на свойство, чтобы получить его значение, в чем смысл свойств? Почему бы не использовать только потоки?

Моя ситуация такова, что когда пользователь нажимает кнопку, обновляется некоторая конфигурация. В другом месте в моем коде мне нужно прочитать последние значения конфигурации. Но это не произойдет одновременно с его изменением.


person Ian Warburton    schedule 03.04.2015    source источник
comment
Просто используйте комбинатор для потока нажатия кнопки и свойства конфигурации.   -  person Bergi    schedule 03.04.2015
comment
Извините, я не понимаю. У меня конфигурация обновляется нормально по нажатию кнопки. Позже он использует значение, на котором я застрял.   -  person Ian Warburton    schedule 03.04.2015
comment
И где в вашем коде вам нужно использовать этот конфиг?   -  person Bergi    schedule 03.04.2015
comment
После обратного вызова AJAX. Во время обратного вызова кнопка отправки не активна и имеет другой текст. Когда запрос завершится, мне нужно переключить текст обратно на то, что говорит текущая конфигурация.   -  person Ian Warburton    schedule 03.04.2015
comment
Похоже, вам нужно другое свойство, сообщающее вам, когда активен запрос ajax, и объедините его с config. Или поток событий завершения запроса ajax для моментального снимка текущих значений конфигурации, если вам это нужно.   -  person Bergi    schedule 03.04.2015
comment
Я понимаю. Когда запрос вернется, он выдаст ответ, и я смешаю это событие с текущим значением конфигурации.   -  person Ian Warburton    schedule 03.04.2015
comment
Проблема с объединением заключается в том, что теперь он вызывает onValue в конце отправки формы, когда изменяется только конфигурация. :)   -  person Ian Warburton    schedule 05.04.2015


Ответы (1)


Вы можете использовать property.toEventStream() для создания EventStream на основе свойства, где поток также содержит событие для текущего значения Свойства во время вызова этого метода.

Пример:

// Config property created somewhere
var config = someStream.toProperty();

// Your behaviour depends on config
config.toEventStream().onValue(function(conf) {
    // React to config changes here
    // conf will be the "current" value on first call
});

Как упоминалось в комментариях, объединение потоков и свойств может быть более подходящее решение в зависимости от того, что вы на самом деле пытаетесь сделать.

person Henry Heikkinen    schedule 09.09.2015