Chrome拡張機能の「onMessage」に問題があります。 私はプラグインを持っていますので、ボタンが2つあります。buton1私はbackground.jsでメッセージを送りました。そこには、"displayManagementTab()"という関数があります。 chrome.storage.localのデータがあります。データがたくさんあり、chrome.storage.localからロードするには約7秒以上かかります。 ロード時に、buton2プラグインをクリックして設定パネルを開くと、ローカルストレージのすべてのデータがロードされ、chrome.storage.locaからのロードが完了するまで何も起こりません。buton2は"メッセージ"を実行し、機能"displaySettingsTab()"を実行します。私はのonMessageへのaddListenerときChromeランタイムに複数のメッセージを送信
は、ここでは、コードです:
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
console.log("got message: " + request.command);
if (request.command == "ok") {
displayManagementTab();
}
if (request.command == "management") {
displayManagementTab();
}
if (request.command == "settings") {
displaySettingsTab();
}
if (request.command == "loadtab") {
runAmazonInNewTab(request.url);
}
});
方法管理要求が終了したのを待たずにI request.command == "設定"できますか?この問題を解決する必要があるのsetTimeoutを使用して
は
それは 'displayManagementTab()'ブロックしているように聞こえます。たぶん、非同期の方法で書き直すことはできますが、その関数のコードを表示しない限り、分かりにくいです。 – user1337
もっとコードを書いてください。設定タブを表示してデータの読み込みを延期するのはなぜですか? –
遅いコードに対してサービスワーカーを使用する方法があります。これにより、バックグラウンドスクリプトは自由に追加のメッセージを処理できます。 – abraham