проблема при использовании для цикла в асинхронной функции в узле JS ES6 - PullRequest
0 голосов
/ 31 августа 2018

Я написал этот фрагмент кода, который извлекает список контактов и в ответ показывает, что 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 ("пользователи" + JSON.stringify (пользователи));

res.json (JSON.stringify (пользователей)); спасибо за совет

1 Ответ

0 голосов
/ 31 августа 2018

Если обещание отклонено, выражение await выдает отклоненное значение.

Вам нужно справиться с отклоненными обещаниями. Если один из вызовов delay возвращает отклоненное обещание, отклоненное значение генерируется, и выполнение функции останавливается, и управление передается первому блоку перехвата в стеке вызовов.

жду оператора

оператор throw

...