localStorage 데이터베이스로 데이터를 가져오고 설정하는 백그라운드 스크립트가 있습니다. 내 콘텐츠 스크립트는 데이터를 보내고 받으려면 백그라운드 스크립트와 통신해야합니다.Chrome 확장 프로그램에서 비동기 메시지 전달에 가장 적합한 디자인 패턴은 무엇입니까?
지금은 명령과 데이터가 포함 된 함수에 JSON 객체를 보냅니다. 그래서 데이터베이스에 객체를 추가하려고하면 addObject라는 명령 속성과 데이터 인 다른 객체가있는 JSON을 만듭니다. 이 작업이 완료되면 백그라운드 스크립트는 성공했다는 응답을 보냅니다.
함수의 또 다른 사용 사례는 성공/실패가 아닌 개체를 다시 보낼 데이터를 요청하는 것입니다.
일단 백그라운드 스크립트에서 반환 된 객체를 검색하려고하면 코드가 해커가됩니다.
내가 따라 잡지 못한 간단한 디자인 문제가 여기에있는 것처럼 보입니다. 어떤 사람들은 미래/약속의 디자인 문제를 제안했지만 아주 좋은 예는 발견하지 못했습니다. 여기
내용 스크립트
function sendCommand(cmdJson){
chrome.extension.sendRequest(cmdJson, function(response){
//figure out what to do with response
});
}
배경 스크립트
if (request.command == "addObject"){
db[request.id]= JSON.stringify(request.data);
sendResponse("success");
}
else if(request.command == "getKeystroke"){
var keystroke = db[request.id];
sendResponse(keystroke);
}
명령을 실행 한 후 반환 할 코드를 어떻게 결정합니까? 반환 된 데이터를 살펴보아야합니까? 또는 호출 할 함수를 명시 적으로 지정하는 필드를 추가해야합니까? – ZeroDivide
콘텐츠 스크립트에서 호출 할 함수를 지정합니다. 업데이트를 참조하십시오. – katspaugh