求大佬问一个nodejs里面的promise的问题

发布于 2022-09-12 01:33:43 字数 1671 浏览 17 评论 0

const mysql = require('mysql')
const { MYSQL_CONF } = require('../config/db.js')
const con = mysql.createConnection(MYSQL_CONF)
con.connect()

// 统一执行sql的函数

function exec(sql) {
    const promise = new Promise((resolve, reject) => {
        con.query(sql, (err, result) => {
            if (err) {
                reject(err);
                return
            }
            resolve(result)
        })
    })
    return promise
}

module.exports = {
    exec
}

这行代码导出exec

const { exec } = require('../db/mysql.js')

const loginCheck = (username, password) => {
    const sql = `
        select username,realname from users  where username='${username}' and password='${password}'
    `
    return exec(sql).then(rows => {
        return rows[0] || {}
    })
}
module.exports = { loginCheck }

这行代码返回的为啥是一个promise对象 ,这里搞不明白 不是已经.then了吗 并且返回了内容了吗 然后后面代码继续.then就不清楚为啥能这样 打印出来也是返回的promise

const { loginCheck } = require('../controller/user')
const { SuccessModel, ErrorModel } = require('../model/resModel.js')

const handleUserRouter = (req, res) => {
    const {
        method,
        url
    } = req

    // 登录
    if (method === 'POST' && req.path === '/api/user/login') {
        const { username, password } = req.body
        const result = loginCheck(username, password)
        return result.then(data => {
            if (data.username) {
                return new SuccessModel()
            } else {
                return new ErrorModel('登录失败')
            }
        })
    }
}
module.exports = handleUserRouter

求解 这段代码的result为啥还能.then

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

塔塔猫 2022-09-19 01:33:43

then返回的是一个新的promise

随风而去 2022-09-19 01:33:43
const a = Promise.resolve("world");
const b = a.then(world => console.log(`hello ${world}`));
console.log(a);         // Promise { 'world' }
console.log(b);         // Promise { <pending> }
console.log(a === b);   // false
  • then() 返回一个 Promise
  • then() 返回的不是原来的 Promise
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文