سؤال

أود أن استخدام جوجل اياكس تغذية API لجلب متعددة خلاصات الأخبار و عرضها على صفحة ويب.

لا يمكنني استخدام جوجل FeedControl الدرجة لأنني أريد أن التحكم في طريقة العناصر من الأعلاف يتم عرضها.أن يترك لي مع جوجل تغذية الطبقة باعتبارها الخيار الوحيد.

لقد حصلت على عمل مع تغذية واحدة:توفير url رد وظيفة ؛ عملية نتائج تغذية داخل وظيفة رد الاتصال.

سؤالي:كيف يمكنني جلب متعددة يغذي ؟ وأود أن يكون بطريقة أو بأخرى لجعل جوجل الجديد.الأعلاف.تغذية الكائن داخل وظيفة رد الاتصال و تقديم عنوان 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();
    }
}

أنا لا أعرف جوجل API تغذية ، ومن ثم نائبا start_feed_download وظيفة.

ما أن يفعل تبدأ عملية الاستيلاء على الأعلاف عن طريق grabFeeds الوظيفة التي تقبل مجموعة من الأعلاف. grabFeeds تنطلق feedWorker, الذي يبدأ أول تغذية الطلب ، ثم يعود على الفور (من المؤكد تقريبا قبل أول تغذية يتم استردادها). callback عمليات النتيجة ، ثم يسأل feedWorker ركلة المقبل تغذية الطلب (إذا كان هناك واحد).

"السحر" هنا هو أن feedWorker و callback على حد سواء الإغلاق, لذا على الرغم من grabFeeds وقد عاد بالفعل ، index و feeds المتغيرات يعيش على (في كائن يسمى "سياق التنفيذ") ما دام أي شيء مراجع الأمور داخل سياق التنفيذ في حالتنا هذه ، حتى callback و feedWorker لم تعد المشار إليه من قبل جوجل الأشياء.

نصائح أخرى

نعم ، يمكنك أن تفعل ذلك حسنا, فقط تأكد من أن كلما كنت تفعل العودية لديك حالتين: (أ) الحالة الأساسية (ب) العودية القضية.

فقط في الحالة الثانية لا وظيفة الدعوة نفسها ، تأكد من أن كنت لا في حالة قاعدة وإلا سوف ينتهي بك الأمر مع لانهائي العودية.على سبيل المثال ، في هذا مضروب وظيفة 0 هي الحالة الأساسية ، كل شيء آخر هو حالة متكررة

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

بدلا من ذلك, يمكنك القيام بها في وقت واحد ، أي.بدء أول واحد ، ثم البدء في ثانية واحدة, بدلا من الاضطرار إلى الانتظار لمدة أسبوع تماما الحمل قبل الثانية يبدأ التحميل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top