request请求后输出的结果中id都为最后一个id
request请求后输出的结果中id都为最后一个id
txt文件内容: 1 张一 2 张三
js脚本大致如下:
var data = fs.readFileSync(filename,'utf-8');
var arryData = data.split('\r\n');
var ev_body = 0;
for(i=1;i<arryData.length;i++)
{
if(i%2!=0)
{
id = arryData[i];
var reqUrl = "http://www.test.com?id="+cvid;//假设请求该地址可以返回结果,结果为该id的成绩
console.log(reqUrl);
request.get(reqUrl,function(err,res){
var get_code = res.statusCode;
var get_body = res.body;
ev_body = eval("("+ get_body +")");
console.log('id号'id + '的同学成绩=' + ev_body);
})
}
}
打印结果是: id号2的同学成绩=70 id号2的同学成绩=80
期望结果是: id号1的同学成绩=70 id号2的同学成绩=80
7 回复
异步的问题,循环早完了,当回调执行时候,i就是2了
@DevinXian 那我应该怎么处理呢
比闭包保存下变量,不过这不是正确的办法。正确的应该是使用异步编程库来处理,Cnode这样的话题很多,一搜一堆的
@DevinXian 我猜你以前是写别的语言的
@Treagzhao why?写过java和js,是同时学的,另外大学里大家都学过c的吧
推荐三个我用过的模块:async
、eventproxy
和bluebird
@DevinXian 哈哈哈 我好像看错人了·····