首页 > 解决方案 > 从nodejs中的回调函数返回值

问题描述

我有这种方式的功能

function con(){
    database.connect(con, (err, con) => {
        conn.query("select * from person", (err, rs) => {
            console.log(rs)--->result
            return rs
        })
    }
}
var val = con()
console.log(val) // --> Undefined

经过大量搜索后才知道我们不能从回调中返回值。完成这个

function con(fn){
    database.connect(con, (err, con) => {
        conn.query("select * from person", (err, rs) => {
            console.log(rs) // --> result
            fn(rs)
        })
    }
}
var val = con(function(rs) {
    console.log(rs) // --> result
    return rs
})

console.log(val) // --> Again undefined

我想在另一个方法中使用 rs 并且应该在 graphql 的解析器中返回它 如何从上面返回值并在另一个函数中使用它

标签: node.jscallbackgraphqlasynccallback

解决方案


所以,你需要清楚地理解的事情——当你return,你从当前函数返回。

在示例中:

var val = con(function(rs) {
    console.log(rs) // --> result
    return rs
})

rs从匿名回调函数返回。但con不返回任何东西。

我建议你使用async/await,只要我让你使用pgmysql

const connection = await database.connect(connectionOptions)
const result = await connection.query('select * from person')
console.log('Result:', result)

推荐阅读