我有一個後臺腳本負責獲取和設置數據到localStorage數據庫。我的內容腳本必須與後臺腳本通信以發送和接收數據。Chrome擴展中異步消息傳遞的最佳設計模式是什麼?
現在我發送一個JSON對象給包含命令和數據的函數。因此,如果我試圖添加一個對象到數據庫,那麼創建JSON的命令屬性是addObject,另一個對象是數據。完成後,後臺腳本會發送回應,說明它已成功。
函數的另一個用例是詢問數據,在這種情況下,它將發送一個對象而不是成功/失敗。
一旦我開始嘗試從後臺腳本中檢索返回的對象,代碼就會變得有點黑。
看來有可能是一個簡單的設計問題,在這裏,我不熟悉。有些人提出了未來/承諾的設計問題,但我還沒有找到一個很好的例子。
內容腳本
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 2012-02-13 05:29:25
說明在內容腳本中調用哪個函數。查看更新。 – katspaugh 2012-02-13 05:57:28