javascript - 如何观察对象的方法返回的属性变化

标签 javascript web reactive-programming observable watch

我正在开发登录系统,需要查看用户是否登录/注销。判断用户登录状态的值通过以下方式返回:

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() 并每秒检查一次对象对于性能而言可能不是一个好主意。

最佳答案

这可能不会像您预期的那样工作。 因为我很确定每次调用 Parse.User.current() 时都会返回一个不同的对象,并且每个用户至少返回一个不同的对象。 如果属性没有改变,你就不能看到属性改变,而是返回的对象发生了改变。

创建登录和注销函数,并让它们在用户登录或注销时发送事件。然后你就有了一些你可以监控/观察的东西。

关于javascript - 如何观察对象的方法返回的属性变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39807493/

相关文章:

swift - Rx swift : Observe viewDidLoad from view model without Subjects

java - react 堆项目 : downstream is slow

javascript - toStaticHTML 方法删除了 name 属性

web - 如何估算网站带宽

javascript - 通过 <select> 更改时验证可见输入 JS

sql - Azure 网站无法连接到 SQL Azure 数据库

javascript - 改变所有的游标?

java - 为什么在这种情况下我们需要 Publish 和 RefCount Rx 运算符?

javascript - 正则表达式向前查找多个元素

javascript - 在单页应用程序中使用 AngularJs UI Router 和全局变量