首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Object.observe顺序

Object.observe顺序
EN

Stack Overflow用户
提问于 2014-12-26 02:28:00
回答 1查看 83关注 0票数 0

我在节点v0.11.13上使用Object.observe()。

似乎无法预测要调用的观察回调的时间。是一个bug还是一个特性?

请看下面的代码:

代码语言:javascript
复制
function observe(obj,name){
    Object.observe(obj, function(o){
        console.log(name,o);
    });
    return obj;
}
var boo = observe({foo:1},'a');
var doo = observe({foo:1},'b');
doo.foo=2;
boo.foo=2;

输出如下所示:

代码语言:javascript
复制
a [ { type: 'update', object: { foo: 2 }, name: 'foo', oldValue: 1 } ]
b [ { type: 'update', object: { foo: 2 }, name: 'foo', oldValue: 1 } ]

我期望的是相反的顺序。我想知道这是否与规范或此功能的节点实现有关。

EN

回答 1

Stack Overflow用户

发布于 2014-12-26 02:45:43

它似乎遵循观察者注册的顺序,而不是值被更改的顺序。

代码语言:javascript
复制
var doo = observe({foo:1},'a');
var boo = observe({foo:1},'b');
var zoo = observe({foo:1},'c');
var too = observe({foo:1},'d');

zoo.foo = 2;
too.foo = 2;
doo.foo= 2;
boo.foo= 2;

a [Object]
b [Object]
c [Object]
d [Object]

这是有意义的,因为在通过执行堆栈处理的同步运行期间,对同一对象的多个更改将被批处理在一起。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27649708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档