4

コンテンツ スクリプトとメイン アドオン スクリプトの間で同期通信を行う方法はありますか?

このようなメソッドを作成すると、メソッドはすぐに戻ります。メインスクリプトが応答するのを待ってから結果を処理する方法はありますか?

main.js

 worker.port.on("GetValue"),function(key)
 {
     worker.port.emit('GetValue',ss.storage[key]);
 }

コンテンツスクリプト

//get value from local storage

function GetValueFromLocalStorage(key) 
{
    self.port.emit("GetValue", key);

    self.port.on("GetValue", function (value) 
        { 
                return value;

        }); 
}

非同期コードはクリーンで整理されておらず、特にこのメソッドに複数回アクセスする必要がある場合は悪夢になるため、これが可能であれば有益です。

4

1 に答える 1

2

いいえ、アドオン SDK は、非同期通信のみを許可するように設計されています。当初のアイデアは、最終的に SDK ベースの拡張機能は別のプロセスで実行されるのに対し、コンテンツ スクリプトは Web ページのプロセスで実行する必要があるというものでした。この計画がまだ進められているかどうかはわかりませんが、おそらくそれが非同期 API の主な理由です。そうでなければ、すべての拡張機能を壊さずにマルチプロセスに変更することは不可能です。

明らかに、低レベルの API と特にクロム権限を使用して、Web ページに直接かつ同期的にアクセスできます。しかし、十分に文書化され、サポートされている地形から離れることになります。コードの読みやすさがこれを検討している唯一の理由である場合、最善の考えではないかもしれません。

于 2012-09-18T11:42:35.233 に答える