0

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

基本上我想等待我的登录请求的响应,然后去签入请求。否则签入请求会给出 401,即身份验证错误。

现在我正在尝试使用诸如 step、wait.for 或 async 之类的库来等待响应。使用 async.series 我正在尝试此代码,但unexpected token functionfunction two()

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);
                                });
                        )];
                }
            }
        }
        //    });
}
4

1 回答 1

1

由于您试图在带括号的表达式中定义多个函数,因此您收到了意外的标记错误。在您的控制台中尝试此行:

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

这里发生的事情是你试图访问 async.series 就像它是一个数组或其他东西:

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

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

async.series[ (...) ];

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

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

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

我认为你真正的意思是打电话,async.series然后通过...arrayfunctions

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

您更新的代码可能看起来像这个fiddle

于 2014-09-19T07:09:49.903 回答