我有大约100个需要每3分钟获取一次的Rss链接。Node.js异步模块在迭代完成前完成
所以我使用异步模块来做到这一点。但是,在处理所有Rss链接之前,它会完成并退出。 以下是守则。
feedRecords是一个数组,其中包含RSS url和一个id;
var items = [];
var parseRss = require("parse-rss");
var async = require('async');
async.forEach(feedRecords, function taskIterator(feedItem, callback)
{
parseRss(feedItem.url, function (err, articles)
{
if (err)
{
callback(err);
}
else
{
console.log("Feed Id : " + feedItem.feed_id + ", Length : " + articles.length);
items.push({ data : articles, feed_id : feedItem.feed_id });
callback(null);
}
});
},
function()
{
if (items.length > 0)
{
console.log("Total : " + items.length);
}
else
console.log("No data found");
});
我立刻得到找不到数据,然后我得到的日志结果。
下面是输出
No data found
Feed Id : 12, Length : 3
Feed Id : 14, Length : 1
Feed Id : 13, Length : 1
Feed Id : 17, Length : 8
Feed Id : 4, Length : 11
Feed Id : 5, Length : 7
Feed Id : 6, Length : 8
Feed Id : 16, Length : 24
Feed Id : 11, Length : 11
Feed Id : 3, Length : 18
Feed Id : 1, Length : 183
是否有人可以解决并确认这是正确的程序来解析约100 RSS订阅链接,并将其存储在MySQL每3分钟没有重复分贝。
谢谢bokor, 实际上err有价值**没有文章**所以这是造成问题。 我可以跑5到10平行,以便它更快地完成工作。 – Sharath
如果要运行5到10个并行任务,则可以使用eachLimit,其中第二个参数是要执行的并行任务数。如果这解决了您的问题,请考虑接受答案,谢谢。 –