如何观察对象方法返回的属性更改

时间:2016-10-01 13:58:14

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

1 个答案:

答案 0 :(得分:1)

这可能不会像你期望的那样奏效。 因为我非常确定Parse.User.current()每次调用时都会返回不同的对象,并且每个用户至少会返回一个不同的对象。 如果属性没有改变,你就无法观察属性变化,而是返回对象。

创建登录和注销功能,让用户在用户登录或注销时调度事件。然后你有一些你可以监视/观察的东西。