簡體   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