Ваша система выглядит нормально, и вот некоторые незначительные улучшения.
Для каждой удаленной команды отправьте обратно объект того же типа (возможно с пустыми полями):
var response = {
success: true, // or false
data: {},
errors: [],
callback: ''
}
Также, еслиу вас есть несколько различных команд, которые отправляют данные назад, вы можете заменить if-else
поиском объекта:
var commands = {
addObject: function () { /* ... */ },
getKeystroke: function (request, response) {
response.data = db[request.id]
}
}
Затем, если у вас есть какие-либо данные для ответа, просто добавьте их к объекту.И отправьте один и тот же объект для любой команды:
var fn = commands[request.commands]
fn(request, response)
Что касается выяснения, что делать с ответом, я передам обратный вызов в функцию sendCommand
, и пусть скрипты содержимого запрашивают и обрабатывают ответданные по своему усмотрению:
function sendCommand(cmdJson, callback){
chrome.extension.sendRequest(cmdJson, callback)
}