0

크롬 확장 프로그램을 개발 중이며 서버에서 보낸 개체를 저장합니다. 예를 들어, I는 수신처 :크롬 확장의 로컬 저장소에 저장된 개체 업데이트

명령 = {ID가 "1"입력 "A"크기 "B"우선 순위 "C"}

를 I 더라면 데이터베이스, 난 테이블에 라인으로 삽입 할 것이라고 commands. chrome.storage를 사용하여이 객체 배열을 commands 키에 저장합니다. 나는 서버가 새로운 명령을받을 때

하지만, 나는, 로컬 스토리지에서를 얻을 배열을 업데이트 해야하고 다시을 설정합니다. 나는 얻고 설정하는 동안 또는 저장된 명령을 삭제하는 동안 다른 명령을받는 경우에 대해 걱정합니다. 세마포어에 대해 생각하고 있지만 좋은 생각인지 모르겠다.

누군가 나에게 무엇을 제안 할 수 있습니까?

감사합니다. IndexedDB (샘플 코드가 복잡하게 보일 수도 있지만, 두 개의 작은 기능 here, getStyles 및 saveStyle, 또는 IDB-keyval wrapper library 예를 들어, 실제 확장에 아주 간단) :

+0

약속을 연결하여 새 변경 사항을 시작하기 전에 이전 변경 사항이 모두 완료되었는지 확인하는 것은 어떻습니까? – Ozan

답변

0

확장 데이터베이스를 사용할 수 있습니다.

당신이 chrome.storage를 사용하려면, 단지 서버 리스너에 의해 채워지는 글로벌 queue 배열 유지 : 자바 스크립트 엔진은 싱글

function updateStorage() { 
    if (!queue.length) { 
     return; 
    } 
    chrome.storage.local.get('commands', function(data) { 
     data.commands = [].concat(data.commands || [], queue); 
     queue = []; 
     chrome.storage.local.set(data); 
    }); 
} 

으로 :

queue.push(newItem); 
updateStorage(); 

chrome.storage.local.get 콜백 처리를 - 스레드, 실행하는 동안 queue 변경 될 수 있습니다 걱정할 필요가 없습니다.

관련 문제