Frage

Ich möchte die Google AJAX-Feed API holen mehr Feeds und zeigt sie auf einer Webseite.

kann ich nicht von Google Feedcontrol-Klasse verwenden, weil ich die Art und Weise die Elemente des Futters steuern möchten angezeigt. Das läßt mich mit Google-Feed Klasse, die als einzige Option.

Ich habe es mit einem einzigen Feed zu arbeiten: eine URL und eine Callback-Funktion zur Verfügung stellen; verarbeitet die Ergebnisse des Futters innerhalb der Callback-Funktion.

Meine Frage: Wie kann ich mehrere Feeds holen? Ich würde irgendwie ein neues google.feeds.feed Objekt innerhalb der Callback-Funktion machen muß und sie mit einer neuen URL und ... die gleiche Callback-Funktion (?)

ich nie Informatik studiert, so dass diese Art von Rekursion macht meinen Kopf drehen. Jeder kann erklären, was ich tun?

War es hilfreich?

Lösung

Sicher, können Sie es auf diese Weise tun, hier einige Pseudo-Code:

// '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();
    }
}

Ich weiß nicht, die Google Feed API, damit die Platzhalter start_feed_download Funktion.

Was das bedeutet ist starten der Prozess der die Feeds über die grabFeeds Funktion greifen, die eine Reihe von RSS-Feeds akzeptiert. grabFeeds startet feedWorker, der die erste Zuführungsanforderung einleitet, und dann kehrt die sofort (fast sicher, bevor der erste Feed abgerufen werden). callback verarbeitet das Ergebnis, dann fragt feedWorker, um die nächste Zuführungsanforderung kick off (falls vorhanden).

Die "Magie" ist hier, dass feedWorker und callback beide Verschlüsse , so dass, obwohl grabFeeds bereits zurückgekehrt ist, der index und feeds Variablen lebt (in einem Objekt eines „Ausführungskontext“ bezeichnet), solange alles das, was im Innern des Ausführungskontextes verweist - in unserem Fall , bis callback und feedWorker sind nicht mehr referenziert von Googles Zeug.

Andere Tipps

Ja, können Sie das in Ordnung, so stellen Sie sicher, dass, wenn Sie die Rekursion zu tun haben Sie zwei Fälle (a) den Basisfall und (b) der rekursive Fall.

Nur im zweiten Fall hat sich die Funktion aufrufen, stellen Sie sicher, dass Sie nicht in der Basisfall sonst werden Sie mit einer unendlichen Rekursion enden. Zum Beispiel in dieser Fakultäts-Funktion 0 ist das Basismodell, alles andere ist die rekursive Fall

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

Alternativ könnten Sie zu einer Zeit, sie ein tun, das heißt. Starten Sie den ersten, dann den zweiten beginnen, statt warten zu müssen, für eine vollständig vor der zweiten beginnt Laden laden zu.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top