新手弱弱问一句, 我这个同步用法为啥就是不work?

2013-12-09 12:07:17 +08:00
 defage
用async模块

意图是有一串url api 在array里, [url1, url2, url3]
用http.get执行之, 执行的结果收集到统一的var A = new Array() 里.
var AAA = [];
async.forEach(urls, function(url) {
http.get(url, function(res) {

var size = 0;
var chunks = [];

res.on('data', function(chunk){
size += chunk.length;
chunks.push(chunk);
});

res.on('end', function(){
var data = Buffer.concat(chunks, size);
AAA.push(data);
});

}).on('error', function(e) {
cb(e, null);
});
});

console.log(AAA);
// ==> 最后这结果还是空的[]

concat, series什么的都试过, 就是不行. 实在需要请求指教了. js新手, 各位请轻喷.
3242 次点击
所在节点    Node.js
3 条回复
leofml
2013-12-09 12:36:51 +08:00
用map
defage
2013-12-09 12:50:02 +08:00
@leofml 谢谢回复.
我用了map过, 也不行.
我都是直接在里面做push, 如果直接在push后log,能看到结果, 但在外面就被异步了
defage
2013-12-09 13:01:59 +08:00
谢谢. 琢磨了下, 用map搞的差不多了. 谢谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/92372

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX