我在节点v0.11.13上使用Object.observe()。
似乎无法预测要调用的观察回调的时间。是一个bug还是一个特性?
请看下面的代码:
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;输出如下所示:
a [ { type: 'update', object: { foo: 2 }, name: 'foo', oldValue: 1 } ]
b [ { type: 'update', object: { foo: 2 }, name: 'foo', oldValue: 1 } ]我期望的是相反的顺序。我想知道这是否与规范或此功能的节点实现有关。
发布于 2014-12-26 02:45:43
它似乎遵循观察者注册的顺序,而不是值被更改的顺序。
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]这是有意义的,因为在通过执行堆栈处理的同步运行期间,对同一对象的多个更改将被批处理在一起。
https://stackoverflow.com/questions/27649708
复制相似问题