0

我正在使用Java Script处理 Windows 8 应用程序

我的 RSS 提要很少,例如:

  1. http://dmadmin.dailymirror.lk/index.php?option=com_ninjarsssyndicator&feed_id=16&format=raw

  2. http://dmadmin.dailymirror.lk/index.php?option=com_ninjarsssyndicator&feed_id=17&format=raw

以下函数获取每个 rss 提要并转换为 JSON 对象。但我想做的是将所有 rss 提要获取到一个 JSON 对象。(有两个 rss 提要。所以在函数调用之后它给了我两个单独的 JSON 对象。但我想要一个对象)

    for (x = 0; x < listOfFeed.length; x++) {
        //loop x start
        feedburnerUrl = listOfFeed[x].url,
            feedUrl = "http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&output=json&num=999&q=" + encodeURIComponent(feedburnerUrl);

        WinJS.xhr({
            url: feedUrl,
            responseType: "rss/json"
        }).done(function complete(result) { //result = [object XMLHttpRequest]  for the requested URLs                                                                                   
            var jsonData = JSON.parse(result.response);  //jsonData = [object Object] create Object
            var entries = jsonData.responseData.feed.entries; //entries = [object object][object object][object object]......

            entries.forEach(function (entry) { // process the entries...                                

               console.log('{"title" :"' + entry.title + '","Date":"' + entry.publishedDate + '"},');                          
            });
        });
    }  //loop x finish
}
  1. listOfFeed = rss url 的数组。
  2. 条目 = 完整 JSON 对象中的每个对象(一个 URL 中有 25 个项目)。
  3. jsonData = 每个 url 的 JSON 格式。所以我得到了两个。但是我想要这两个 url 的一个 JSON 对象。

感谢您的任何帮助...

4

1 回答 1

0

您可以使用Array.concat()来加入条目数组。您还可以跟踪未完成请求的数量,然后在达到 0 时处理条目。例如:

var allEntries = [];
var pendingRequestCount = listOfFeed.length;

var onRequestFinished = function() {
  pendingRequestCount--;

  if (pendingRequestCount === 0) {
    allEntries.forEach(function (entry) { // process the entries...                                
      console.log('{"title" :"' + entry.title + '","Date":"' + entry.publishedDate + '"},');                          
    });
  }
};

for (x = 0; x < listOfFeed.length; x++) {
  ... // Same as before
  }).done(function complete(result) {
    var jsonData = JSON.parse(result.response);  
    var entries = jsonData.responseData.feed.entries; 

    allEntries = allEntries.concat(entries);

    onRequestFinished();        
  });
}  //loop x finish

您还应该处理失败的请求并调用 onRequestFinished 函数。

于 2013-10-07T07:11:48.187 回答