いつものように、私はこれをかなりグーグルで検索し、Message Passing API を読みましたが、やはり StackOverflow の優秀な人に頼らなければなりませんでした。
私の質問は次のとおりです: Google Chrome 拡張機能のバックグラウンド ページとコンテンツ スクリプトの間でメッセージを渡す場合、非同期にする方法はありますか。つまり、メッセージが正常に渡されたと検出されるまで JavaScript を遅らせる方法はありますか?
localStorage
メッセージパッシング関数が渡されたデータを利用した直後に関数があります。最初の実行では、データが十分に速く渡されないため、スクリプトは常にエラーになります。
現在、私はこれを回避してsetTimeout(nextFunction, 250);
いますが、渡される値の量とサイズは常に変化し、値を渡すのに必要な時間を知る方法がないため、これはエレガントで実用的なソリューションとは言えません。さらに、経過時間はブラウザのバージョンとユーザーのシステムに関連していると思います。
つまり、動的にする必要があります。
私は次のようなことを検討しました
function passMessages(){
chrome.extension.sendRequest({method: "methodName"}, function(response) {
localStorage["lsName"] = response.data;
});
checkPassedMessages();
}
function checkPassedMessages(){
if (!localStorage["lsName"]){
setTimeout(checkPassedMessages, 100); //Recheck until data exists
} else {
continueOn();
}
}
しかし、私はかなりの量のデータ (少なくとも 20 個の値) を渡す必要があり、率直に言って、それは実用的で!localStorage["lsName1"] && !localStorage["lsName2"]
はありません。さらに、それが機能するかどうかもわかりません。
誰にもアイデアはありますか?
ありがとう
更新:残念ながら、まだ答えはありません。誰でも何か助けを提供できますか?:/