0

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を使用して

+0

それは 'displayManagementTab()'ブロックしているように聞こえます。たぶん、非同期の方法で書き直すことはできますが、その関数のコードを表示しない限り、分かりにくいです。 – user1337

+0

もっとコードを書いてください。設定タブを表示してデータの読み込みを延期するのはなぜですか? –

+0

遅いコードに対してサービスワーカーを使用する方法があります。これにより、バックグラウンドスクリプトは自由に追加のメッセージを処理できます。 – abraham

答えて

0

if (request.command == "management") { 
    setTimeout(displayManagementTab, 0); 
} 
+0

いいえ、役に立たない – jason

関連する問題