这段代码错在哪?
发布于 8 年前 作者 liangweidong 3672 次浏览 来自 问答

大家好,以下这段代码会时不时出错,请问错在哪?应该怎么写才好

	 var superagent = require('superagent');
	var cheerio = require('cheerio');
	var eventproxy = require('eventproxy');
	exports.index = function(req,res,next){
		var urlitems = [];
		var items = [];
		superagent.get('http://www.woyaogexing.com/tupian/dongman/')
			.end(function(err,sres){
				if(err){
					return next(err);
				}
				var $ = cheerio.load(sres.text);
				$(".txList_1").each(function(index,element){
					var $element = $(element);
					urlitems.push(
						$element.find(".img").attr("href")
						//title:$element.find('.imgTitle').text(),
						//imgurl:$element.find('.lazy').attr("src")
					);
	
				});
				var ep = new eventproxy();
				ep.after('urlhtml', urlitems.length, function (srestext) {
					// topics 是个数组,包含了 40 次 ep.emit('topic_html', pair) 中的那 40 个 pair
					// 开始行动
					srestext.map(function(val){
						var $ = cheerio.load(val);
						$('.artCont p img').each(function(index,element){
							items.push({
								imgurl:$(element).attr("src"),
								title:$(".pifutitle h1").text(),
								height:$(element).height
							});
						});
					});
					//这里就只执行一次
					res.render('join', {website:"join",content:items});
				});
				urlitems.forEach(function (imgslink) {
					superagent.get("http://www.woyaogexing.com"+imgslink)
						.end(function (err, sres2) {
							if(sres2){
								ep.emit('urlhtml', sres2.text);
	
							} else {
								return res.status(403).send("错误");
							}
	
						});
				});
			});
	};
	```
5 回复

5B4B.tm.png

错误信息,是不是return 错误的时候执行了多次?

回调问题啊,你这都res.render了怎么还res.status。。。

res.status后面发了多次了

响应发送后再来设置请求头,去理解一HTTP协议吧!

utlitems.forEach触发多次urlhtml

回到顶部