在函数内部声明并解决的承诺无法正确执行

时间:2019-08-10 12:32:55

标签: javascript promise

因此,我编写了一个函数来处理sqlite3数据库run命令。从我读到的sqlite3是异步的,我需要将查询包装在Promise中。但是,当我使用new sqlite3.Database('UsersDb'), 'BEGIN TRANSACTION', []运行此代码时,首先进入控制台消息"DEBUG: RunSql some code",然后进入'DEBUG: OKKK'。我不明白为什么,我觉得消息的顺序应该颠倒,这就是使用诺言的重点。

我已经为此战斗了几个小时,我不知道为什么它不起作用。

// Takes database, sql command and parameters returns boolean informing about success
function sqlCmdRun(database, sql, parms) {
    let sqlCmd = new Promise((resolve, reject) => {
        database.run(sql, parms,  function (err) {
            if(err) {
                console.log(err.message);
                reject();
            }
            resolve();
        });
    });

    sqlCmd
        .then(function () {
            console.log("DEBUG: OKKK")
        }).catch(function () {
            console.log("DEBUG: ERROR EXECUTING sql:" + sql)
        });
    console.log("DEBUG: RunSql some code")
}

0 个答案:

没有答案