2013-02-07 3 views
0

동시에 자바 스크립트 함수 .. 이 볼 ..호출 xajax/I가 동시에 같은 기능을 수행 할 수있는 방법이 있는지 묻고 싶다

function convert_points() 
{ 
    show_loading(); 
    xajax_ConvertPoints(); 
    xajax_GetRegularGamingCards(); 
} 

을 xajax_ConvertPoints를 호출 할 때 . xajax_GetRegularGamingCards가 호출 된 후 MILISECOND 지연. 난이 때문에 같은 난 각 함수에 넣어 로그의 .. ..

2013-02-07 17:13:53 || LAUNCHPAD42 || TRANSACTION TYPE: CONVERT POINTS || SWCQAZ1 || 
2013-02-07 17:13:53 || LAUNCHPAD43 || TRANSACTION TYPE: CONVERT POINTS || SWCQAZ1 || 
2013-02-07 17:13:53 || LAUNCHPAD44 || TRANSACTION TYPE: CONVERT POINTS || SWCQAZ1 || 
2013-02-07 17:13:53 || LAUNCHPAD45 || TRANSACTION TYPE: CONVERT POINTS || SWCQAZ1 || 
2013-02-07 17:13:54 || LAUNCHPAD46 || TRANSACTION TYPE: CONVERT POINTS || SWCQAZ1 || 
2013-02-07 17:13:54 || LAUNCHPAD47 || TRANSACTION TYPE: CONVERT POINTS || SWCQAZ1 || 
2013-02-07 17:13:54 || LAUNCHPAD48 || TRANSACTION TYPE: CONVERT POINTS || SWCQAZ1 || 

2013년 2월 7일하면 0.54 및 0.53 (2013년 2월 7일 17시 13분 차이 Theres는 것을 증명 : 53) 밀리 세컨드. 정확한 시간에 전화 할 수있는 방법이 있습니까?

+0

나는 두려워합니다. Javascript는 항상 단일 스레드에서 작동합니다. 어쩌면 그게 왜 필요하다고 말할 수 있겠습니까? –

+0

당신의 문제에 대한 또 다른 해결책이 있다고 확신합니다. –

답변

0

모든 종류의 언어에서 동일한 밀리 초 단위로 실행되는 동일한 코드 행을 보장하는 것은 불가능합니다. 자바 스크립트에서 당신은 그것의 결과를 기다리지 않고 functon를 실행하고 모든 시나리오가 순차적으로 실행 될 수 있도록에서는 setTimeout

function convert_points(){ 
    setTimeout(show_loading,0); 
    setTimeout(xajax_ConvertPoints,0); 
    setTimeout(xajax_GetRegularGamingCards,0); 
} 
+0

답장을 보내 주셔서 감사합니다. 이게 작동하면 모두 알려 드리겠습니다. – mesekarome

0

자바 스크립트 코드가 실행될 때 한 번에 하나의 스레드에서만 발생할 수 있으므로 이러한 두 함수를 동시에 실행할 수 없으므로 동시에 실행할 수 없습니다.

0

자바 스크립트가 단일 스레드로 동작을 사용하여 실행 다른 라인에 지속될 수 있습니다.

당신은 그들을 동시에 실행해야합니까? 왜 두 개의 스크립트를 합쳐 하나의 아약스 요청에 참여시키지 않겠습니까?

또 다른 옵션은 sleep을 넣어 호출하는 스크립트의 실행을 지연시키는 것입니다. 그러나 나는 이것을 정말로 추천하지 않을 것이다. 내가 제안하는 것이 최선이라면, 하나의 스크립트가 두 스크립트 대신에 필요한 것을 수행하도록하는 것입니다.

데이터 동시성이 필요한 DB 작업 인 경우 트랜잭션 스타일 명령을 사용하여 데이터 불일치가있는 나노초가 없는지 확인할 수 있습니다. 어떤 이유로 든 호출 할 필요가 있기 때문에 이것이 더 낫습니다. 최종 사용자 관점에서 클라이언트 측의 자바 스크립트를 매우 쉽게 변경할 수 있기 때문입니다. 이것이 서버에서 더 나은 이유입니다.

+0

thanks.but 시나리오는 인터넷 연결이 끊어지면 유닛 손실이 발생합니다. 두 번째 기능은 실행되지 않았습니다. 그래서 나는 이것을 동시에 실행하고 싶습니다. 감사합니다. – mesekarome

+0

그들은 서버에서 처리되기 때문에 둘 다 실행됩니다. 트랜잭션 스타일 시스템은 기본적으로 프로세스의 한 부분이 실패하고 아무 것도 커밋되지 않은 경우입니다. – Akshat