getJSON을 사용하여 서버에서 JSON을 가져 와서이 데이터를 처리하고이를 사용자에게 제공하는 프로그램이 있습니다. 그러나 서버의 데이터는 매번 업데이트되고 있습니다. 새 JSON을 5 분마다 얻고이를 사용자에게 표시하고 백그라운드 스레드에서 어떻게 할 수 있습니까? 이 문제에 setTimeout을 사용할 수 있습니까?데몬 Thread in Javascript
감사합니다. Matt
getJSON을 사용하여 서버에서 JSON을 가져 와서이 데이터를 처리하고이를 사용자에게 제공하는 프로그램이 있습니다. 그러나 서버의 데이터는 매번 업데이트되고 있습니다. 새 JSON을 5 분마다 얻고이를 사용자에게 표시하고 백그라운드 스레드에서 어떻게 할 수 있습니까? 이 문제에 setTimeout을 사용할 수 있습니까?데몬 Thread in Javascript
감사합니다. Matt
5 분마다 실행되는 간격을 사용하는 것이 확실하고 (대부분의 브라우저와 호환되는) 접근법입니다.
이것은 별도의 스레드를 만들지 않지만이를 수행하는 전통적인 시뮬레이션입니다. 실제로 일어나는 모든 것은 비동기 이벤트가 대기열에 올려 져 있고, 실행해야하는 시점에 가능한 한 가깝게 한 번에 실행되도록하는 것입니다. 하지만 동일한 스레드에서 실행되므로 Precision은 보장되지 않습니다. 따라서 JS 엔진 실행시 '기회 창'이 필요합니다.
즉, JS 엔진은 필요한 순간에 코드를 실행하기 위해 최선을 다할 수 있지만 자유롭게 사용할 수 있습니다.
이전 브라우저 지원에 대해 신경 쓰지 않는다면 진정한 별도의 스레드에서 실행되는 web worker을 사용할 수 있습니다.
웹 작업자 스크립트
self.addEventListener('message', function(evt) {
var gateway = new XMLHttpRequest();
var intie = setInterval(function() {
gateway.open("GET",evt.data.load_url,true);
gateway.send();
gateway.onreadystatechange = function() {
if (gateway.readyState==4 && gateway.status==200)
self.postMessage(gateway.responseText);
}
}, 300000); //every 5 minutes
}, false);
(. 내가 웹 노동자 내부에 jQuery를 사용하여 어떤 방법을 알고 아니에요로서 내가 jQuery를, 거기에 바닐라 JS를 사용하지 참고 당신은 스크립트를 가져올 수 있지만, jQuery를 할 수 있습니다 그들은 창이나 DOM)
홈페이지 JS 스크립트에 어떤 관계를 가지고 있지 않는 한 웹 근로자의 오류 참조 window
,
var worker = new Worker('worker.js');
worker.addEventListener('message', function(evt) {
//the loaded JSON data is now held in evt.data
alert(evt.data);
}, false);
worker.postMessage({load_url: 'json.txt'});
새 작업자에게 5 분마다 전화를 걸거나, 한 명의 작업자를 사용하여 5 분마다 작동시키는 데 도움이되는지 여부는 확실하지 않습니다. 아마도 그 이후로는별로 많지 않을 것입니다. 어떤 경우에도 간격이 벌어지고 있기 때문입니다.
예, 데이터를 setTimeout
(또는 끝없이 실행하려면 setInterval
)으로 가져올 수 있습니다. 더 나은 옵션이라고 생각합니다.
예. 'setTimeout' (또는'setInterval'조차도)이 일을하는 방법입니다. – Matt