request请求后输出的结果中id都为最后一个id
发布于 8 年前 作者 jecyyu 3165 次浏览 来自 问答

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的吧

推荐三个我用过的模块:asynceventproxybluebird

@DevinXian 哈哈哈 我好像看错人了·····

回到顶部