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

发布于 2022-09-03 08:03:06 字数 556 浏览 14 评论 0

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

定格我的天空 2022-09-10 08:03:06

用递归:

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-09-10 08:03:06

不需要使用while循环,写一个递归函数就好了,函数执行post方法请求选课,回调里确认成功不做任何处理,不成功调用当前函数就好了

娇柔作态 2022-09-10 08:03:06
    function fun(err, res, body)
    {
        console.log(res.statusCode);
        if (check(body)) //成功选上或没有余量了
        {
            ...跳出循环
        } else {
            request.post({
                url: url,
                form: {
                    courseId: "123456" //课程信息
                },
                jar: cookieJar
            }, fun);
        }
    }
小鸟爱天空丶 2022-09-10 08:03:06

串行执行可以考虑async模块的serial方法

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文