对象.观察顺序
Object.observe order
我在节点v0.11.13上使用Object.observe()。
看起来无法预测要调用的观察回调的时间。 是错误还是功能?
看看这段代码:
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 } ]
我期待相反的顺序。我想知道这是否与此功能的规范或节点 impl' 有关。
它似乎遵循观察者注册的顺序,而不是值更改的顺序。
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]
这是有道理的,因为在同步运行到执行堆栈处理期间对同一对象的多个更改将一起批处理。
相关文章:
- knockoutjs可观察数组
- ajax请求的顺序总是不同的
- 按照选项卡索引的顺序循环一个jQuery选择
- 匹配一个单词,其中候选人可以跨越顺序组(跨度)
- 按顺序添加和删除类
- 按我自己的类克隆另一个元素的内容和顺序
- Javascript-根据赋值顺序,按键合并对象数组
- 多次发射多个可观察器的问题
- 2个backbone.js集合,具有相同的模型,但排序顺序不同
- querySelector/getElementByClassName嵌套项的顺序
- 未激发路由的控制器属性上的观察者
- 以不同的顺序输出数据
- 重新排列HTML元素的顺序并更改内容
- 无法在关闭弹出窗口时传递可观察的数据
- 淘汰js可观察扩展的执行顺序是什么
- 突变观察者收到的突变记录的顺序是什么?
- 对象.观察顺序
- 角度观察程序和事件侦听程序的执行顺序
- 敲除绑定顺序/不带可观察性
- RxJS的执行顺序可从连锁承诺中观察到