在节点js es6中的异步函数中使用for循环时出现问题

问题描述 投票:0回答:1

我已经编写了这段代码来检索联系人列表,作为回应显示JSON一切正常,但代码没有显示任何输出我应该做什么?这是我的代码:

export const ContactListPost = (req, res) => {
        //const userHeader = req.get('userid');
        const contacts = req.body;
        console.log(contacts);
        let users = [];
        const delay = contact => new Promise(function (resolve, reject) {
            let sql = "select user.userid, user.fullname, user.phone, 

    photos.name as photo_link " +
                "from user left outer join photos on photos.uploader_id = user.userid where user.phone = ?";
            console.log("contact " + contact);
            con.query(sql, [contact], function (err, result) {
                if (err){
                    console.log(err);
                    reject(err);
                } else{
                    if (result.length > 0) {
                        users.push(result);
                        console.log(result);
                        resolve(result);
                    }else{
                        console.log("empty number");
                        //reject(result);
                    }
                }
            })
        });
        (async function loop() {
            for (let i = 0; i< contacts.length ; i++){
                let result = await delay(contacts[i].number);
                users.push(result);
                console.log("result " + JSON.stringify(result));
                console.log("i " + i);
            }
            console.log("users " + JSON.stringify(users));
            res.json(JSON.stringify(users));
        })();

    };

这段代码没有显示

console.log(“users”+ JSON.stringify(users));

res.json(JSON.stringify(用户));谢谢你的建议

mysql node.js promise async-await
1个回答
0
投票

如果promise被拒绝,则await表达式抛出被拒绝的值。

你需要处理被拒绝的承诺。如果对delay的一个调用返回被拒绝的promise,则抛出被拒绝的值,并且函数的执行将停止,控制将被传递给调用堆栈中的第一个catch块。

await operator

throw statement

© www.soinside.com 2019 - 2024. All rights reserved.