質問

Google AJAXフィードを使用したい複数のニュースフィードを取得してウェブページに表示するAPI

フィードのアイテムの表示方法を制御するため、GoogleのFeedControlクラスを使用できません。そのため、GoogleのFeedクラスが唯一の選択肢になります。

単一のフィードで動作するようにしました。URLとコールバック関数を提供します。コールバック関数内でフィードの結果を処理します。

私の質問:複数のフィードを取得するにはどうすればよいですか?どういうわけか、コールバック関数内に新しいgoogle.feeds.feedオブジェクトを作成し、新しいURLと...同じコールバック関数(?)を提供する必要があります

コンピューターサイエンスを勉強したことがないので、この種の再帰は頭を回転させます。 誰も私がしなければならないことを説明できますか?

役に立ちましたか?

解決

もちろん、あなたはそのようにすることができます、ここにいくつかの擬似コードがあります:

// 'feeds' is an array of the feed URLs
function grabFeeds(feeds) {
    var index;

    // We start with the first feed
    index = 0;

    // Kick off the process
    feedWorker();

    // Our "go get the next feed" function
    function feedWorker() {
        var feed;

        // Do we have any more?
        if (index < feeds.length) {
            // Yes, request it and bump our index
            // (You could combine these lines, but it's
            // clearer to keep them separate)
            feed = feeds[index];
            ++index;
            start_feed_download(feed, callback);
        }
    }

    // Our callback function
    function callback() {
        // ...do something with the result...

        // Kick of the next feed (feedWorker is defensive,
        // so we don't have to check index here)
        feedWorker();
    }
}

Google Feed APIがわからないため、プレースホルダー start_feed_download 関数。

それは、フィードの配列を受け入れる grabFeeds 関数を介してフィードを取得するプロセスを開始します。 grabFeeds は、最初のフィードリクエストを開始する feedWorker を開始し、すぐにを返します(ほぼ確実に最初のフィードが取得される前)。 callback は結果を処理し、 feedWorker に次のフィードリクエスト(ある場合)を開始するように要求します。

&quot;魔法&quot;ここでは、 feedWorker callback は両方ともクロージャー。したがって、 grabFeeds がすでに返されていても、 index および feeds 変数は存続します。 (&quot; execution context&quot;と呼ばれるオブジェクト内で)実行コンテキスト内のものを参照する限り、この場合、 callback feedWorker がnoになるまでGoogleのものでより長く参照される。

他のヒント

はい、大丈夫です。再帰を行うときは常に、(a)基本ケースと(b)再帰ケースの2つのケースがあることを確認してください。

2番目の場合のみ、関数自体が呼び出されます。ベースケースではないことを確認してください。そうしないと、無限の再帰が発生します。たとえば、この階乗関数では、0が基本ケースであり、それ以外はすべて再帰ケースです

function fact(n) {
    if (n==0) { return 1; }
    else { return n * factorial(n-1) }
}

別の方法として、一度に1つずつ実行することもできます。最初のものを開始してから2番目のものを開始します。2番目のものが完全にロードされるのを待ってから、2番目のものがロードを開始します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top