繁体   English   中英

如何使用async.series等待响应?

[英]How to use async.series to wait for response?

我昨天发布了这个问题: https : //stackoverflow.com/questions/25919099/how-do-i-use-callback-to-solve-authentication-issue

基本上,我想等待登录请求的响应,然后转到“签入”请求。 否则,签入请求将给出401,这是身份验证错误。

现在,我正在尝试使用诸如step,wait.for或async之类的库来等待响应。 使用async.series我正在尝试这段代码,但是它在function two()给出了unexpected token function错误

function checkin() {

    async.series[(
                function one() {
                    agent1
                        .post(login-url)
                        .type('form') // send request in form format
                        .send({
                            username: username,
                            password: password
                        })
                        .end(function(err, res) {
                            console.log("response for login is ", res.statusCode, " ", res.message);
                        });
                }

                function two() {
                    for (var i = 0; i < count; i++) {
                        if (validatePayment(rows[i].Payment) == true && validateMobile(rows[i].Mobile) == true) {
                            console.log("inside validation");
                            agent1
                                .post(checkin-url)
                                .send({
                                    phone: rows[0].Mobile,
                                    outlet: outletID
                                        //outlet: "rishi84902bc583c21000004"
                                })
                                .end(function(err, res) {
                                    console.log("response for checkins is ", res.statusCode, " ", res.message);
                                });
                        )];
                }
            }
        }
        //    });
}

由于尝试在带括号的表达式中定义多个函数,因此出现了意外的令牌错误。 在控制台中尝试以下行:

(function one() {} function two() {})

这是怎么回事,您正在尝试访问async.series,就像它是一个数组之类的东西:

async.series[ ...index here... ]

然后,对于索引,您要传递一个表达式:

async.series[ (...) ];

表达式错误地包含两个函数定义:

async.series[ ( function one() { ... } function two() { ... } ) ]

带括号的表达式只能返回一个值。 两个函数将争夺返回值,因此无效。 但是首先,您所做的一切都是错误的。

我认为您真正的意思是调用async.series并传递array functions ...

async.series( [ function one() {...}, function two() {...} ] );

更新后的代码可能是这样的小提琴

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM