CNode

请高手帮助 有点难度 循环回调合并数据

问答
Wwuqing5828发布于11 年前最后回复11 年前7 回复4362 浏览0 收藏

for(var i in list){ var plurl="http://xxx.com?eid="+list[i].id; requestUrl(plurl,function(err,data){ //数据处理 }); } //这里合并for的数据

就是将for里requestUrl回调函数的数据都合并到一起 请问这该怎么做呢

查看回复

回复 (7)

2
20082496#1·11 年前

async.each试试?

M
MiguelValentine#2·11 年前

var result={} var len =0; for(var i in list){ len++; } for(var i in list){ var plurl="http://xxx.com?eid="+list[i].id; requestUrl(plurl,function(err,data){ result[i]=data; len--; next(); }); } function next(){ if(!len){ //你的执行-》结果都在result中 } }

3
359056163#3·11 年前

var eventproxy = require("eventproxy"); var ep = new eventproxy(); var result =[]; ep.after("list",list.length,function(rows){ rows.forEach(function(r){ result = result.concat(r); }) }) for(var i in list){ var plurl="http://xxx.com?eid="+list[i].id; requestUrl(plurl,ep.group("list")); } //最后result 就是你要的结果

3
359056163#4·11 年前

说明 由于转义字符,(r) 应该是(r)

3
359056163#5·11 年前

我艹!(r)

W
wuqing5828#6·11 年前

谢谢大家了 我使用async.map 解决了

D
dayuoba#7·11 年前
function collectDatas(err, data) {
	result.push(data);
	checkDone();
}
function checkDone() {
	count++;
	if (count === list.length) 
		cb(result);
}
var callback = function(err, data) {
	collectData(err, data);
};

大致是这么个思路

参与回复
登录后即可参与回复。登录