最近学校开始选课了,我正在写刷课机练练手。其中最后一个步骤就是不断地给服务器post选课请求,我打算把这个post操作放在一个死循环中执行,通过回调函数控制何时跳出循环。想请教一下,node.js中如何让循环体中的函数同步顺序执行?我的代码大致如下:
while (1) { request.post({ url: url, form: { courseId: "123456" //课程信息 }, jar: cookieJar }, function (err, res, body) { console.log(res.statusCode); if (check(body)) //成功选上或没有余量了 { ...跳出循环 } }); }
我希望能够依次执行每一个post操作,输出statusCode后再执行下一个post。
感激不尽
串行执行可以考虑async模块的serial方法
function fun(err, res, body) { console.log(res.statusCode); if (check(body)) //成功选上或没有余量了 { ...跳出循环 } else { request.post({ url: url, form: { courseId: "123456" //课程信息 }, jar: cookieJar }, fun); } }
不需要使用while循环,写一个递归函数就好了,函数执行post方法请求选课,回调里确认成功不做任何处理,不成功调用当前函数就好了
用递归:
function postData(){ request.post({ url: url, form: { courseId: "123456" //课程信息 }, jar: cookieJar }, function (err, res, body) { console.log(res.statusCode); if (check(body)) //成功选上或没有余量了 { return; } else{ postData(); } }); } postData();