私の Firefox 拡張コードでは、Facebook で AJAX リクエストを観察した後、特定の (非常に重いコンピューティング) 機能を実行しています。現在、Facebook はそれらに大きく依存しており、多くのリクエストが短い秒間隔で生成されていることを考えると、拡張機能のパフォーマンスが低下しています! 要するに、今私は次のものを持っています:
var httpRequestObserver =
{
observe: function(subject, topic, data)
{
if (topic == "http-on-modify-request")
{
var httpChannel = subject.QueryInterface(Components.interfaces.nsIHttpChannel);
if (httpChannel.URI.spec.search("facebookj.com")!=-1)
{
//setTimeout(function () {my_function();}, 2000);
}
}
}
};
my_function
ただし、今では実行回数を制限して実行したいと考えています。たとえば、1 分あたりです。言い換えれば、観測された HTTP リクエストのいくつかを単純にスキップしたいということです。
オブザーバー関数にタイムアウトを付けますか? それとも、observed のグローバル カウンターを宣言してから、3 つおきhttp-on-modify-requests
に呼び出しますか? my_function
または、それを行うより良い方法はありますか?