#javascript #web #reactive-programming #observable #watch
#javascript #веб #реактивное программирование #наблюдаемый #Смотреть
Вопрос:
Я работаю над системой входа в систему, и мне нужно следить, входит ли пользователь в систему / выходит. Значение, определяющее статус входа пользователя, возвращается следующим образом:
Parse.User.current().id // returns id when logged in
Parse.User.current() // returns null when logged out
ожидаемая функциональность (псевдокод):
watch( Parse.User.current().id, function (old_val, new_val) {
console.log( 'User id has changed from: ', old_val, ' to: ', new_val );
});
// expected result: User id has changed from null to H4tn34vw0
Я хотел бы сохранить широкую поддержку браузера, например, ie9 . Я подумал Object.observe()
, но он может просматривать свойства объекта, а не значения, возвращаемые методами, если я прав. Кроме того, использование setInterval()
и проверка объекта каждую секунду могут быть не очень хорошей идеей для повышения производительности.
Ответ №1:
Вероятно, это будет работать не так, как вы ожидаете. Потому что я почти уверен, что Parse.User.current()
при каждом вызове он возвращает другой объект и, по крайней мере, другой объект для каждого пользователя. И вы не можете наблюдать за изменением свойства, если свойство не изменяется, но вместо этого возвращается объект.
Создайте функцию входа и выхода и позвольте им отправлять событие при входе или выходе пользователя. Тогда у вас есть что-то, что вы можете отслеживать / наблюдать.