0

昨日この質問を投稿しました:https://stackoverflow.com/questions/25919099/how-do-i-use-callback-to-solve-authentication-issue

基本的に、ログイン要求からの応答を待ってから、チェックイン要求に移動します。それ以外の場合、チェックイン要求は認証エラーである 401 を返します。

現在、step、wait.for、async などのライブラリを使用して応答を待機しようとしています。async.series を使用してこのコードを試していますが、unexpected token functionエラーが発生していますfunction 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[ (...) ];

式には誤って 2 つの関数定義が含まれています。

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

括弧で囲まれた式は、1 つの値のみを返すと想定されています。2 つの関数がその戻り値になるために競合するため、無効です。しかし、あなたがしていることは、そもそもすべて間違っています。

あなたが本当に意味しているのは、を呼び出して、のasync.seriesを渡すことだと思います...arrayfunctions

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

更新されたコードは、このfiddleのようになります。

于 2014-09-19T07:09:49.903 に答える