【发布时间】:2017-06-17 13:01:26
【问题描述】:
我正在创建一个简单的 rss 提要聚合器。为此,我使用了一个名为“blind-parser”的模块。该模块解析一个 rss/xml 字符串并返回一个对象。
我的目标是从多个 RSS 提要中获取这些对象并渲染它们。所以我最初是这样做的:
var obj1 = {},obj2 = {}, obj3 = {};
app.get('/',function(req,res){
parser.parseURL('https://www.toptal.com/blog.rss', function (err, parsed1) {
obj1 = parsed1;
});
parser.parseURL('https://www.toptal.com/designers/blog.rss', function (err, parsed2) {
obj2 = parsed2;
});
parser.parseURL('http://jsfeeds.com/feed', function (err, parsed3) {
obj3 = parsed3;
});
parser.parseURL('http://www.mironov.com/feed/', function (err, parsed4) {
obj4 = parsed4;
});
res.render('index', {'toptal': obj1 , 'toptaldesign' : obj2 , 'jsf': obj3 , 'product': obj4 });
});
但是它不起作用,因为 obj1、obj2、obj3 和 obj4 原来是未定义的。 我不明白。我尝试在 app.get 内部和外部声明变量,均无效。
所以我这样做了,
app.get('/',function(req,res){
parser.parseURL('https://www.toptal.com/blog.rss', function (err, parsed1) {
parser.parseURL('https://www.toptal.com/designers/blog.rss', function (err, parsed2) {
parser.parseURL('http://jsfeeds.com/feed', function (err, parsed3) {
parser.parseURL('http://www.mironov.com/feed/', function (err, parsed4) {
res.render('index', {'toptal': parsed1 , 'toptaldesign' : parsed2 , 'rs': parsed3 , 'product': parsed4 });
});
});
});
});
});
瞧,它奏效了!然而,这种方法的主要缺点是,每次我嵌套另一个 rss 链接时,它所花费的时间都会增加 2 倍。
已经加载三层嵌套页面所需的时间约为 20 秒。
有人可以帮我解决这个问题吗,我也是节点新手,所以请详细说明。
谢谢。
【问题讨论】: