2016-11-30 3 views
2

정기적으로 서비스 작업자로부터 API를 호출하여 localStorage에 저장된 데이터를 보내려고합니다. 이 데이터는 사용자가 내 웹 사이트를 탐색 할 때 생성되고 localStorage에 저장됩니다. localStorage에 통계를 저장하고 서비스 작업자를 통해 주기적으로 보내는 것과 같은 것으로 생각하십시오. 어떻게해야합니까? 서비스 작업자가 localStorage에 액세스 할 수 없으며 postMessage API를 사용해야 함을 이해합니다. 어떤 도움을 주시면 감사하겠습니다.서비스 작업자로부터 localStorage에 액세스하십시오.

답변

5

webworker 프로세스에서 localStorage (및 sessionStorage)에 액세스 할 수 없으므로 보안상의 이유로 undefined이됩니다.

다시 작업자의 코드에 postMessage()을 사용해야하며 해당 코드는 localStorage에 데이터를 저장해야합니다.

로컬 저장소에서 데이터를 저장하고 가져 오려면 localStorage.setItem()localStorage.getItem()을 사용해야합니다.

더 많은 정보를 정기적으로 아래

Worker.postMessage()

Window.localStorage

의사 코드, 시작 얻을 수 있었으면.

// include your worker 
var myWorker = new Worker('YourWorker.js'), 
    data, 
    changeData = function() { 
    // save data to local storage 
    localStorage.setItem('data', (new Date).getTime().toString()); 
    // get data from local storage 
    data = localStorage.getItem('data'); 
    sendToWorker(); 
    }, 
    sendToWorker = function() { 
    // send data to your worker 
    myWorker.postMessage({ 
     data: data 
    }); 
    }; 
setInterval(changeData, 1000) 
+0

'var myWorker = new YourWorker ('YourWorker.js'),'>'새 웹Worker'가 맞습니까? – Roberrrt

+0

@Roberrrt, 귀하의 코멘트 주셔서 감사합니다, 올바른'새로운 근로자()'입니다 :) – GibboK

+0

감사하지만 GibboK, 나는 몇 가지 의문이있다. 당신이 언급 한 코드는 내 자바 스크립트 중 하나에서 실행됩니다. 그리고이 실행하려면 사용자가 웹 사이트를 실행해야합니까? 그렇지 않니? 사용자가 내 웹 사이트에 있지 않더라도 서비스 작업자가 로컬 저장소에서 데이터를 주기적으로 보내는 곳을 찾고 있습니다. 내 시나리오도 가능합니까? – Faiz