用了async/await为什么还是异步
发布于 7 年前 作者 zhang14725804 6139 次浏览 来自 问答

var cheerio = require(“cheerio”); var fs = require(‘fs’); var superagent = require(“superagent”); const charset = require(‘superagent-charset’); charset(superagent);

superagent.get(‘http://www.kanunu8.com/files/chinese/201103/1976.html’) .charset(‘utf8’) .end(function(err, sres) { if (err) { return next(err); } var $ = cheerio.load(sres.text); var items = []; $(“a”).each(function(idx, element) { var $element = $(element); items.push($element.attr(“href”)); })

	cutItem(items);
    writexydh(items);
});

function cutItem(items) { for (var i = 0; i < items.length; i++) { items[i] += ‘’; if (typeof items[i] == undefined || items[i].indexOf(‘1976’) == -1) { delete items[i]; } } return items; } //这里使用了async await 但是写入文件的顺序还是乱的 如果是同步执行的话,写入文件的顺序应该是正常的 async function writexydh(items) { for (var j = 0; j < items.length; j++) { if (items[j] != “” && items[j] != undefined) { await reqxydh(‘http://www.kanunu8.com/files/chinese/201103/’ + items[j]); } } } var reqxydh = function(url) { superagent.get(url) .charset(‘gbk’) .end(function(err, sres) { var $ = cheerio.load(sres.text); fs.writeFileSync(‘xydh.txt’, $(“h2”).text() , { flag: ‘a’ }); }); }

结果:::第03章 第16章 第01章 序 言 第04章 第11章 第12章 第07章 第15章 第02章 第06章 第14章 第08章 第10章 第13章 第09章 第05章 尾 声

4 回复

各位哥哥,求罩呀

var reqxydh = function(url) {
	return new Promise((resolve, reject) => {
		superagent.get(url)
		.charset(‘gbk’)
		.end(function(err, sres) {
			if(err) return reject(err)
			var $ = cheerio.load(sres.text);
		    fs.writeFileSync(‘xydh.txt’, $(“h2”).text() , {
				flag: ‘a’
			});
			resolve()
		});
	})
}

@xiedacon 对的,谢谢小哥

回到顶部