Javascript:Promise.all似乎没有解决

时间:2015-11-10 13:45:47

标签: javascript promise es6-promise

我尝试使用feedparser-promised映射某些RSS Feed,但我对Promise.all()的调用并未返回任何内容。 (使用var来自我的REPL,它不支持constlet

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);

xundefined的形式返回。如果我登录promises,它会按预期显示为Promises数组。我错过了什么?

1 个答案:

答案 0 :(得分:0)

x未定义,因为getAllFeedsarrow 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);
  })