我尝试使用feedparser-promised
映射某些RSS Feed,但我对Promise.all()
的调用并未返回任何内容。 (使用var
来自我的REPL,它不支持const
或let
)
var feedparser = require('feedparser-promised');
var R = require('ramda');
var URLS = ['http://feeds.gawker.com/gizmodo/full',
'http://kotaku.com/vip.xml',
'http://www.medievalhistories.com/feed/'];
var getAllFeeds = (urls) => {
promises = R.map(feedparser.parse, urls);
Promise.all(promises)
.then((itemArrs) => itemArrs)
.catch((err) => {throw new Error(err)});
}
var x = getAllFeeds(URLS);
console.log(x);
x
以undefined
的形式返回。如果我登录promises
,它会按预期显示为Promises数组。我错过了什么?
答案 0 :(得分:0)
x
未定义,因为getAllFeeds
是arrow function with statement body,未明确return
。
您应该返回Promise.all
承诺,并在then
/ catch
处理程序中使用结果:
var getAllFeeds = (urls) => {
var promises = R.map(feedparser.parse, urls);
return Promise.all(promises)
}
getAllFeeds(URLS)
.then(items => {
console.log(items);
})
.catch(err => {
console.error(err);
})