玩爽了!直接在Chrome里抓取数据
一个小测试发现可以自动做题,于是想通过脚本的方式看能不能获取相应的题库,刚好可以学习一下JS异步操作。花了一天时间,总算跑顺利了,遇到了不少坑。记录下来分享。
1、JS如何顺序执行
JS有强大的异步操作机制,但由于之前顺序执行的思路受限,直接用For循环的话会把请求结果的顺序搞乱。因此需要让JS在异步的基础上还能够顺序执行,基本的办法是采用Callback的方式。同时为了避免JS在页面的DOM进行操作过程中出现DOM不存在的情况使用SetTimeout来延时执行(这个地方费了了小半天时间)。
注意由于程序代码中有使用$.ajax请求,因此把回调的语句放到$ajax请求的Success方法里。
基本代码结构代码如下:
var i = 0; var loopCall = function(count) { callProcess(i, function() { i++; if (i < count) { loopCall(count); } }); }; function callProcess(i, callback) { console.log('running on: ' + i.toString()); //process code //... //... //使用setTimeout延时,避免DOM操作错误 setTimeout(function(){callback();},100); } loopCall(1000);
2.数据怎么存储
之前只知道有LocalStorage,开发过程中Google了一下才知道有WebSQL,语法和操作也挺简单,也尝试过使用数组变量来存储数据,但发现变量数据大于150K左右的时候浏览器就很慢。因此使用WebSQL来存储
var db = openDatabase(' mydatabase ', '2.0', 'my db', 2 * 1024); db.transaction(function (tx) { tx.executeSql('CREATE TABLE IF NOT EXISTS t1 (id unique, log)'); tx.executeSql('INSERT INTO t1 (id,log) VALUES (?, ?'), [e_id, e_log]; //e_id和e_log是外部变量 });
总结
其他处理代码基本就是原来的页面代码拷贝过来修改修改另加一定的调试。之前想用JS来写一直没有找到场景,现在用了虽然遇到点问题但总算是克服过了。不过JS在异步调用想处理成同步的多层嵌套之后还是需要好好规划一下,虽然在ES6之后增加了Promise类型。
posted on 2016-10-27 19:52 Gary Zhang 阅读(2519) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
2008-10-27 BizTalk开发系列(二十四) BizTalk项目框架建议
2008-10-27 BizTalk开发系列(二十三) BizTalk性能指标参考
2008-10-27 BizTalk开发系列(二十二) 开发自定义Map Functoid