【发布时间】:2019-10-01 07:23:58
【问题描述】:
我对node js有一个疑问 我需要从 RSS 提要中获取数据 为此,我在其中安装了 rss-parser 模块 https://www.npmjs.com/package/rss-parser
让 Parser = require('rss-parser'); 让 parser = new Parser();
(async () => {
let feed = await parser.parseURL('https://www.reddit.com/.rss');
console.log(feed.title);
feed.items.forEach(item => {
console.log(item.title + ':' + item.link)
});
})();
代码是这样的 他们在这里使用异步功能 获取一个 url 的数据馈送 我有很多网址 我需要循环它并在单个数组中获取提要详细信息 有没有可能 请告诉我有什么事情吗 我需要在单个数组中获取所有提要 url 详细信息
到目前为止我已经尝试过了
我试过这段代码
exports.getRssFeedLinks = () => {
// Setting URL and headers for request
// Return new promise
return new Promise((fulfill, reject) => {
// Do async job
let getSql = 'SELECT * FROM `news_feeds`';
//console.log(updateSql);
connection.query(getSql, (error, results, fileds) => {
if(error) {
reject(error);
}
else {
returnResult = JSON.stringify(results);
fulfill(returnResult);
}
});
})
}
exports.errHandler = function(err) {
console.log(err.message);
}
exports.getRssFeeds = (req, res) => {
let parser = new Parser();
let feedLink;
var dataPromise = this.getRssFeedLinks();
//console.log(dataPromise);
dataPromise.then(JSON.parse, this.errHandler)
.then(function(newFeeds) {
// Do one more async operation here
let feedsList = [];
if(newFeeds && newFeeds.length > 0) {
let feedLinks = [];
newFeeds.forEach(feed => {
feedLinks.push(feed.link);
});
(async () => {
let feeds = await Promise.all(feedLinks.map(parser.parseURL));
//feeds will have array of arrays, each array includes the response feed from each url
feeds = [].concat(...feeds) //if you want to flatten the array
feed.forEach(({item}) => {
console.log(item.title + ':' + item.link)
});
feeds.forEach(feed => {
console.log(feed.title);
feed.items.forEach(item => {
console.log(item.title + ':' + item.link)
});
})
})();
}
if(feedsList.length >0) {
res.send({
"success" : true,
"result" : feedsList
});
}
else {
res.send({
"success" : true,
"message" : "No Record ",
"result" : feedsList
});
}
}, this.errHandler);
}
错误 (节点:5700)UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝 id:1):TypeError:无法读取属性 未定义的“选项” (节点:5700)[DEP0018] DeprecationWarning:不推荐使用未处理的承诺拒绝。将来,未处理的 Promise 拒绝将使用非零退出代码终止 Node.js 进程。
【问题讨论】:
-
您自己是否已经尝试过?您可以为每个 URL 执行一个循环,在其中调用异步函数,然后使用 Array.prototype.push() 将结果添加到您的“单个数组”
-
我把我试过的东西放进去
-
我按照你的浓度试过了,但在收集所有提要数据之前它就返回了