我开始学习 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/