nodejs-express - node.js中如何让循环中的函数同步执行

 墨镜小靖 发布于 2022-11-02 00:31

最近学校开始选课了,我正在写刷课机练练手。其中最后一个步骤就是不断地给服务器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。
感激不尽

4 个回答
  • 串行执行可以考虑async模块的serial方法

    2022-11-03 12:27 回答
  •     function fun(err, res, body)
        {
            console.log(res.statusCode);
            if (check(body)) //成功选上或没有余量了
            {
                ...跳出循环
            } else {
                request.post({
                    url: url,
                    form: {
                        courseId: "123456" //课程信息
                    },
                    jar: cookieJar
                }, fun);
            }
        }
    2022-11-03 12:32 回答
  • 不需要使用while循环,写一个递归函数就好了,函数执行post方法请求选课,回调里确认成功不做任何处理,不成功调用当前函数就好了

    2022-11-03 12:46 回答
  • 用递归:

    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();
    
    2022-11-03 12:48 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有