等待所有回调完成后再返回对象
Wait for all callback to complete before returning objects
我有一个函数需要抓取一个网站并返回地址列表。在scrape的回调中,对于返回的每个地址,我需要做另一个scrape操作,然后处理数据,然后我想返回整个处理后的集合。如果必须的话,我不介意阻塞。最终,我必须得到一个包含整个集合的JSON对象。这可能吗?我该怎么做?
function doSomething(req, res){
var collection = [];
scrape1(params, function(error, addresses){
if(!error){
for(var i in addresses){
//do some stuff with addresses here
scrape2(otherparams, function(error, address, data){
//manipulate the data here
collection.push({ 'address' : address, 'data' : data})
});
}
//this just returns an empty set obviously
res.json(collection);
//how can I return the entire collection from this function?
}
});
}
这里有一个使用异步模块的解决方案:
function doSomething(req, res){
var collection = [];
scrape1(params, function(error, addresses){
if (error)
return console.error(err); // handle error better
async.each(addresses, function(address, callback) {
scrape2(otherparams, function(err, address, data){
// manipulate the data here
if (err)
return callback(err);
collection.push({ 'address' : address, 'data' : data});
callback();
});
}, function(err) {
if (err)
return console.error(err); // handle error better
res.json(collection);
});
});
}
相关文章:
- javascript函数,它接受两个输入:一个对象和一个键,并返回对象中该键的相应值
- 通过数组值返回对象
- JavaScript:返回对象的函数
- 为什么document.getElementsByClassName(“className”)返回对象
- 如何返回对象
- Promise没有;t返回对象的数组
- 面料:“;鼠标:向下”;在event.target中未返回对象
- Lodash:返回对象的第一个键,该对象的值(即数组)中有一个给定的元素(即字符串)
- Javascript:返回对象
- 为什么 javascript 返回对象位置 true 或 false
- 解析查询查找方法返回对象而不是数组
- 来自函数的返回对象在 jQuery 中未从 $.post 定义
- JavaScript 返回对象未按预期工作
- 返回“[对象对象] NaN” - Javascript
- 何时从创建返回对象
- Javascript:接收对象并返回对象中描述的所有数字的列表的函数
- JSDoc:返回对象结构
- node.js请求返回对象
- 返回对象的ECMAScript 6箭头函数
- 如何从控制器返回对象列表并使用JQuery(SpringMVC,ajax)显示它们