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

axkjgtzd  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(354)

我已经编写了这段代码,它检索联系人列表,并显示一个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(users));谢谢你的建议

cu6pst1q

cu6pst1q1#

如果承诺被拒绝,await表达式将抛出拒绝的值。
你需要处理被拒绝的承诺。如果其中一个电话 delay 返回被拒绝的承诺,抛出被拒绝的值,函数的执行将停止,控制将传递给调用堆栈中的第一个catch块。
等待操作员
throw语句

相关问题