여러 개의 "서버"가 비동기 적으로 처리 할 큐를 JavaScript로 작성하고 있습니다. 두 서버가 같은 항목을 대기열에서 검색 할 수도 있습니다. 그것은 지금 일어나고있는 것처럼 보이지 않지만 나는 우연히 그것을두고 싶지 않습니다. 필자가 알고 있듯이 JavaScript는 단일 스레드입니다. 그렇다고해서 동시에 여러 요청이있을지라도 JavaScript는 자체 큐를 사용하여 함수를 실행한다는 가정을 허용합니까? 여기 여러 개의 비동기 호출로 큐 관리
function getJob() {
if(jobs.length > 0) {
var job = jobs.shift();
$('#jobStatsQueueCount').text(jobs.length);
return job;
} else {
return null;
}
}
는 전체 코드입니다 :
사실이 시나리오는 어떤 작업입니까? 서버 (1)는 하나의 작업이 있다고 결정한다; 서버 2는 하나의 작업이 있다고 결정하고 서버 1은 작업을 검색 한 다음 이미 검사를 통과 한 서버 2는 작업이 없어지기 때문에 실패합니다. – scader
... 또는 서버 2의 getJob 실행은 서버 1의 실행이 완료 될 때까지 발생하지 않는다고 말하고 있습니까? – scader
... 또는 전체 코드를 살펴보면 자바 스크립트가 이미 실행중인 간격 이벤트를 완료 할 때까지 모든 서버의 간격 이벤트가 실행되지 않습니다. – scader