2013-12-21 2 views
1

함수 나 프로세스가 전역 배열을 업데이트 할 때 다른 프로세스가 자바 스크립트에서 동일한 배열에 액세스하려고하는 동안 불일치가 발생할 수 있습니까? 그렇다면 트랜잭션이 실행되는 동안 파일이나 DBMS에 액세스하는 동안 운영 체제와 유사한 예방 메커니즘이 있습니까? 예를 들어 :자바 스크립트에서 전역 배열의 불일치

<script> 
a = new Array(); //a is global 
setInterval(fun1,10000); 
function fun2() 
{ 
    for(var j=0;j<1000;j++) 
    { 
     a[j]=j; 
    } 
} 
function fun1() 
{ 
    for(var i=0;i<1000;i++) 
    { 
     a[i]=i+1; 
    } 
} 
</script> 
<input type="button" value="Update Array" onclick="fun2()"> 

위의 코드는 버튼을 눌러 this.Merely 단지로 이러한 맥락에서 이해가되지 않습니다 입증하는 샘플은 다음과 같습니다 함수 fun1는 10 초마다 & Fun2에이 버튼을 클릭하여 트리거 실행 타이밍은 중요한 문제입니다. 나는 단지 요소가 완전히 업데이트 될 때까지 javascript가 배열 요소가 다른 함수에 의해 액세스되는 것을 방지하는 기능이 있는지 알고 싶습니다. 미안 해요, 바보 같은 질문을하면!

+1

JavaScript는 단일 스레드이며 동시에 실행되는 다른 스크립트가 없습니다 – Bergi

+0

say, e = document.getElementsByTagName ('span '); 이 전역 e는 문서의 모든 스팬 요소에 대한 참조를 저장합니다. 동적으로 (AJAX) 하나의 범위를 추가하면 e.length가 1 씩 증가합니다. @ Bergi – rosemary

+0

위의 양식 계속 : 또한 값을 수집하는 함수가 있습니다. (i = 0; i rosemary

답변

1

자바 스크립트는 멀티 스레드 언어가 아닙니다. 모든 일이 순조롭게 진행되고 있습니다. 기능이든 아니든간에 논쟁의 여지가 있지만 서로 다른 두 프로세스에서 쓰는 것을 방지합니다.

+0

setTimeout 및 setInterval은 필자의 이해로 인해 호출이 대기하고 X 초 후 실행 된 코드가 실행 된 후에 실행되기 때문에 항상 정확히 X 밀리 초 단위로 코드를 실행하지는 않습니다. –

+0

은 javascript의 변수와 동일합니까? @Lex Podgorny – rosemary

+0

무엇을 의미합니까? –

관련 문제