如何让函数执行mysql2查询,直到查询返回结果后才返回控件?

问题描述

我对Node还是很陌生,实际上并没有真正理解执行异步操作的想法,而是传递了一个应该在操作完成时执行的功能。但是我正在努力。但是现在我想调用一个返回数据库记录的函数。我正在使用MysqL2模块,并将此代码包含在类定义中。

#retrieve_record() {
    db.execute(
        `SELECT * FROM ${this.table_name} WHERE id = ?`,[this.id],(error,results,fields) => {
            if (error) throw error;
            const result = results[0];
            this.created_at = result.created_at;
            this.modified_at = result.modified_at;
        }
    )
}

当执行内部函数的最后一行时,对象将处于我想要的状态,但是很可能,当#retrieve_record将控制权返回给调用者时,该对象将不会处于该状态。呼叫者(到目前为止)看起来像这样:

get created_at() {
    if (this.created_at) return this.created_at;
    this.#retrieve_record();
    return this.created_at;
}

但是我不认为这会如我所愿。那么如何告诉#retrieve_record在内部函数执行完毕之前不将控制权交还给调用者?

解决方法

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

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

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