2014-09-15 3 views
0

내가 생각한 것처럼 맞춤 코드가 동기식이 아니라는 사실을 발견했습니다. ObjectA가 arraybuffers, dataviews 및 typedarrays을 사용Javascript/mycode가 동기가 아닌 이유

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(); 

:

나는이 의사 코드가 있습니다. ObjectB는 Three.js를 사용하여 매우 복잡한 3D 물체를 그립니다.

문제는 내부 '드로우'입니다. OBJ.get_value(); 대신 포인터 값 0 (영)을 사용하고 있습니다. 비정상적으로 (생각했던대로) main.draw (7)는 처음 실행되지 않고 나중에 Main.reset(); Main.reset()이 실행 중이므로 0이됩니다.

DOM 동시성을 기다릴 필요가 없습니다.

이 bechaviour의 이유는 무엇입니까? 세명이 쓰는거야? OOP 스타일을 사용하고 있습니까?

왜 이런 일이 발생하는지 확인할 수있는 방법이 있습니까? 사용 Three.js를 태그 죄송합니다 :

어떤 생각

주를 감상 할 수있다.

때때로 '이' '창'대신 개체의 자체 인스턴스를 가리키는 될 수있는 NO synchonism의

+0

'이'의 잘못된 사용을 .... 검토합니다. – Pointy

+0

@Pointy ... 음, 믿어주세요. 코드가 복잡하지도 않고 복잡하지도 않습니다. 그 이유가 될 수 있다고 생각하면 조언을 해주십시오 – civiltomain

+0

문제를 반복하는 코드를 실행할 수있는 jsfiddle.net 샘플을 만드시겠습니까? –

답변

0

내가 이유를 발견

해결 (또는 생각).

때로는 '창'인 경우이를 잘못 사용하면 사용자가 고려하지 않은 오류가 발생할 수 있습니다. 그런 다음 다음 줄의 코드가 실행될 수 있으며 때로는 잘못된 (동기가 아닌) 작동의 느낌을 가질 수 있습니다.

그래서 .... 잘못 무슨 일이 일어나고 있는지 명확하게하기 위해 당신은 너무 많은 코드를 왼쪽

관련 문제