带有 for 循环的 JavaScript Promise

问题描述

所以我有这个 site_worker 表。某个工作人员可以有多个 site_id。 基本上,我正在尝试遍历 siteIds 并将它们一个一个地插入。

之后,如果没有错误,它应该返回resolve(result)。

然而,尽管 console.log("res: " + res); 被写在底部(我认为是由于异步行为?),但它似乎在 for 循环之前首先执行,因此,它返回了一个 UNDEFINED 值。

如何正确地做到这一点?

const addSiteWorker = async (workerId,siteIds,req) => {
    return new Promise((resolve,reject) => {
        var res;
        for (var i = 0; i < siteIds.length; i++) {
            req.app.db.query(`INSERT INTO site_worker (site_id,worker_id) VALUES (${siteIds[i]},${workerId})`,(err,result) => {
                if (err) {
                    logDetails('error','ADDED SITE WORKER ERROR',err);
                    reject(err);
                } else {
                    res = result;
                }
            });
        }
        console.log("res: " + res);
        if (res != undefined) {
            resolve(res);
        }
    });
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)