LoginSignup
8
8

More than 5 years have passed since last update.

Google Feed APIをjQueryのDeferredで使えるようにする

Last updated at Posted at 2013-07-09

Google Feed APIとは

他のサイトが配信しているATOMやRSSフィードをJavaScriptを使って取得しようとした場合、同一生成元ポリシー(Same-Origin Policy)の制限によって直接他のサーバにあるデータへアクセスできずサーバ側でいったんフィードを受信するなどの処理が必要でした。

Google AJAX Feed APIを使用すると、Googleがフィードのキャッシュとしての役割を果たしてくれるため、サーバ側のプログラムを必要とせず、クライアント側のスクリプトだけで各種フィードを取得することが出来ます。

参考

ようするに、クライアントサイドだけで外部サイトにあるRSSとかを取得できる代物。

Googleライブラリを読み込み

<!-- googleが提供するライブラリを読み込み -->
<script type="text/javascript" src="https://www.google.com/jsapi"></script>

単体での使い方

Google Feed APIを単体で使用しようとすると、下記の様になる。

// feed ライブラリを読み込み
google.load("feeds", "1");
google.setOnLoadCallback(function () {
    var feed = new google.feeds.Feed(url);
    feed.load(function(results) {
        // feed読み込み後の処理
    });
});

複数のfeedを読み込んで処理をしたい時

複数のRSSフィードを非同期的に読み込んで、処理をしたい時は上記のやり方ではできないので、jQueryのDefferdに頼る。

// jQueryのDefferdオブジェクトを返すメソッドの定義
function feed_load(url) {
    var feed = new google.feeds.Feed(url),
        dfd  = $.Deferred();

    feed.load(function(results) {
        return results.error ? dfd.reject(results) : dfd.resolve(results);
    });

    return dfd.promise();
}

google.load("feeds", "1");
google.setOnLoadCallback(function () {
    $.when(feed_load(url1), feed_load(url2), feed_load(url3)).done(function() {
        // 複数のURLを読み込んだ後の処理 
    });
});
8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8