node.js - 在 Node js 的 async.forEach 中返回值?

标签 node.js async.js

我开始学习 node.js,并将多个 rss 提要聚合到一个提要中,我正在提取这些提要,然后根据我提取的数据重新创建一个独特的提要。

因此,为了异步处理多个 http 请求,我使用 https://github.com/caolan/async#forEach哪个完成了工作。

但我不知道如何返回一个值(在我的例子中是 rss xml 提要)。

这是我的代码:

function aggregate(topic) { 
  async.forEach(topic.feeds, 
    function(item, callback) {
      parseAndProcessFeed(item, callback);
    }, 
    function(err) {
      // sort items by date
      items.sort(function(a, b) {
       return (Date.parse(b.date) - Date.parse(a.name));
      });
      var rssFeed = createAggregatedFeed();
      console.log(rssFeed);
      return rssFeed;
    }
  );
}

使用 console.log(rssFeed) 我可以看到 rss 提要,所以我想我遗漏了一些明显的东西。

如何返回 rssFeed 值?

如果能帮我回到座位上就好了,谢谢!

泽维尔

最佳答案

您不能从异步函数返回值。您需要将其传递给回调函数。像这样:

function aggregate(topic, callback) { 
  async.forEach(topic.feeds, 
    function(item, callback) {
      parseAndProcessFeed(item, callback);
    }, 
    function(err) {
      // sort items by date
      items.sort(function(a, b) {
       return (Date.parse(b.date) - Date.parse(a.name));
      });
      var rssFeed = createAggregatedFeed();
      callback(err, rssFeed);
    }
  );
}

aggregate(someTopic, function(err, result) {
    // here is result of aggregate
});

关于node.js - 在 Node js 的 async.forEach 中返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13130667/

相关文章:

node.js - 无服务器和 PUT 命令的 CORS 问题

node.js - 'yarn' 不是内部或外部命令,也不是可运行的程序或批处理文件

node.js - HTTP 请求流在请求处理程序之外不可读

javascript - Node.JS 中的异步

javascript - 在 Node 中将循环转换为异步

node.js - Heroku NodeJS 找不到模块

node.js - 如何使用nodejs从密码查询中获取对象?

javascript - 使用 async.parallel 时出错

javascript - 在 Node.js、es6 中,如何让循环等待异步进程?

node.js - Mongoose : using promises as parameters for other functions