我发现自定义代码并不像我想象的那样同步。
我有这个伪代码:
ObjectA = function ()
{
var pointer;
var value =[];
this.set_pointer = function (p) {pointer = p;}
this.return_value = function () {return value[pointer];}
}
ObjectB = function ()
{
var SCOPE = this;
var OBJ = new ObjectA();
....
this.reset = function ()
{ OBJ.set_pointer(0);}
this.draw = function (what)
{
SCOPE.update();
OBJ.set_pointer(from);
OBJ.get_value();
// do somethings with Three.js
// draw some lines and some little pointclouds.
// do some things
// update two text elements
}
}
Main = new ObjectB();
Main.draw(7);
Main.reset();
ObjectA使用的是arraybuffers,dataviews和typedarrays。 ObjectB正在使用Three.js绘制一些非常简洁的3D东西。
问题出在'画'中。 OBJ.get_value();正在使用指针值0(零)而不是7。 异常(我认为)main.draw(7)首先不执行Main.reset();似乎Main.reset()是中等执行的,所以我有0(零)
我不会等待任何DOM同步。
这个行为的原因是什么?也许三,js使用?我正在使用的OOP风格?
有没有办法检查为什么会这样?
任何想法都将不胜感激
注意:很抱歉使用Three.js标签。
答案 0 :(得分:0)
<强>解决强>
我找到了NO同步的原因(或者我认为)
有时&#39;这个&#39;可以指向窗口&#39;而不是你对象的自我实例。
有时,对此的不当使用(当它是&#39; window&#39;)可能会引发您未考虑的错误。然后可以执行下一行代码,有时您可能会产生错误(非同步)操作的印象。
所以......回顾一下这个&#39; ....
的糟糕用法